diff --git a/contracts/modules/Clusters.sol b/contracts/modules/Clusters.sol index 5a6b8a8c..d46d472d 100644 --- a/contracts/modules/Clusters.sol +++ b/contracts/modules/Clusters.sol @@ -5,4 +5,51 @@ import "./SSVClusters.sol"; contract Clusters is SSVClusters { constructor() {} + + bytes[] publicKeys; + bytes32[] hashedClusters; + + uint64 private constant MIN_OPERATORS_LENGTH = 4; + uint64 private constant MAX_OPERATORS_LENGTH = 13; + uint64 private constant MODULO_OPERATORS_LENGTH = 3; + uint64 private constant PUBLIC_KEY_LENGTH = 48; + + function helper_registerValidator( + bytes calldata publicKey, + uint64[] memory operatorIds, + bytes calldata sharesData, + uint256 amount, + Cluster memory cluster + ) public { + require( + operatorIds.length < MIN_OPERATORS_LENGTH || + operatorIds.length > MAX_OPERATORS_LENGTH || + operatorIds.length % MODULO_OPERATORS_LENGTH != 1, + "Invalid OperatorIds Length" + ); + require(publicKey.length == PUBLIC_KEY_LENGTH, "Invalid PublicKey Length"); + + bytes32 hashedCluster = keccak256(abi.encodePacked(msg.sender, operatorIds)); + + try this.registerValidator(publicKey, operatorIds, sharesData, amount, cluster) { + publicKeys.push(publicKey); + hashedClusters.push(hashedCluster); + } catch { + assert(false); + } + } + + function check_removeValidator(uint64 publicKeyId, uint64[] calldata operatorIds, Cluster memory cluster) public { + publicKeyId = publicKeyId % uint64(publicKeys.length); + + this.removeValidator(publicKeys[publicKeyId], operatorIds, cluster); + } + + function check_invariant_validatorPKs() public { + StorageData storage s = SSVStorage.load(); + + for (uint64 i = 0; i < hashedClusters.length; i++) { + assert(s.clusters[hashedClusters[i]] == bytes32(0)); + } + } } diff --git a/contracts/modules/DAO.sol b/contracts/modules/DAO.sol index 4ec4bfc0..71db2ecb 100644 --- a/contracts/modules/DAO.sol +++ b/contracts/modules/DAO.sol @@ -9,7 +9,12 @@ contract DAO is SSVDAO { sp.networkFee = 100000000 / 10; } - function helper_updateNetworkFee(uint256 amount) public returns (bool) { - this.updateNetworkFee(amount); + function check_updateNetworkFee(uint256 fee) public { + this.updateNetworkFee(fee); + } + + function check_invariant_networkfee() public returns (bool) { + StorageProtocol storage sp = SSVStorageProtocol.load(); + assert(sp.networkFee > 0); } } diff --git a/crytic-export/combined_solc.json b/crytic-export/combined_solc.json index 4596358e..488318df 100644 --- a/crytic-export/combined_solc.json +++ b/crytic-export/combined_solc.json @@ -1 +1 @@ -{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [369], "ISSVNetworkCore": [851]}, "id": 370, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 279, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 280, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 370, "sourceUnit": 852, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 281, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 851, "src": "124:15:0"}, "id": 282, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 369, "linearizedBaseContracts": [369, 851], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 283, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 288, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 286, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 285, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 288, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 284, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 287, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 369, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 289, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 294, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 292, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 291, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 294, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 290, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 293, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 369, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 295, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 300, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 298, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 297, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 300, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 296, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 299, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 369, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 301, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 306, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 304, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 303, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 306, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 302, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 305, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 369, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 307, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 312, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 310, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 309, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 312, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 308, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 311, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 369, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 313, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 318, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 316, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 315, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 318, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 314, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 317, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 369, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 319, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 324, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 322, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 321, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 324, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 320, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 323, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 369, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 325, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 330, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 328, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 327, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 330, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 326, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 329, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 369, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 334, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 333, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 332, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 334, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 331, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 338, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 337, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 336, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 338, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 335, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 342, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 340, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 342, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 339, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 346, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 345, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 344, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 346, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 343, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 350, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 349, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 348, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 350, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 347, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 351, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 357, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 356, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 353, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 357, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 355, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 357, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 354, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 358, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 364, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 363, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 360, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 364, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 362, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 364, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 361, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 368, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 367, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 366, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 368, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 365, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 370, "src": "103:2329:0", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [851]}, "id": 852, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 737, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 851, "linearizedBaseContracts": [851], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 747, "members": [{"constant": false, "id": 740, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 739, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 743, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 742, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 746, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 747, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 745, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 851, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 764, "members": [{"constant": false, "id": 750, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 749, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 753, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 752, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 756, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 755, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 759, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 758, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 763, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 764, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$747_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 762, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 761, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 747, "src": "1129:8:1"}, "referencedDeclaration": 747, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$747_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 851, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 774, "members": [{"constant": false, "id": 767, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 766, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 770, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 769, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 773, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 774, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 772, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 851, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 790, "members": [{"constant": false, "id": 777, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 776, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 780, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 779, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 782, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 786, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 785, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 789, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 790, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 788, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 851, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 792, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 791, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 794, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 793, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 796, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 795, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 798, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 797, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 800, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 799, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 802, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 801, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 804, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 803, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 806, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 805, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 808, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 807, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 810, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 809, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 812, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 811, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 814, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 813, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 816, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 815, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 818, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 817, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 820, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 819, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 822, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 821, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 824, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 823, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 826, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 825, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 828, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 827, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 830, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 829, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 832, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 831, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 834, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 833, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 836, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 835, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 838, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 837, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 840, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 839, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 842, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 841, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 844, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 843, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 846, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 845, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 848, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 847, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 850, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 849, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 852, "src": "70:3477:1", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "IERC20": [1074], "ISSVNetworkCore": [851], "SSVModules": [861], "SSVStorage": [931], "StorageData": [908]}, "id": 501, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 371, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 372, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 501, "sourceUnit": 932, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 500, "linearizedBaseContracts": [500], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 379, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 378, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 375, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 379, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, "typeName": {"id": 374, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 373, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "141:10:2"}, "referencedDeclaration": 861, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 377, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 379, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 376, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 386, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 383, "id": 385, "nodeType": "Return", "src": "269:19:2"}]}, "id": 387, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 380, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 383, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 382, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 387, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 381, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 500, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 410, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 402, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 399, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 400, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 391, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 394, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 395, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 396, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 397, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 903, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "id": 398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1041, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 401, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 409, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 408, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 403, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 405, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 834, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 406, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 407, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 411, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 392, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 389, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 411, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 388, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 391, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 411, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 390, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 393, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 500, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 437, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 421, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 425, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$500", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$500", "typeString": "library CoreLib"}], "id": 424, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 423, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 427, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 413, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 416, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 419, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 903, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1073, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 436, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 435, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 430, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 834, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 434, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 438, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 414, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 413, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 438, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 412, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 415, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 500, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 464, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 451, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 446, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 441, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 448, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 447, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 455, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 454, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 452, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 445, "id": 453, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [457], "declarations": [{"constant": false, "id": 457, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 464, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 456, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 458, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 441, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 457, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 459, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 462, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 460, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 445, "id": 463, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 439, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 465, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 442, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 441, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 465, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 440, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 445, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 444, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 465, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 443, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 500, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 498, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 476, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 474, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 473, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 465, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 482, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 477, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 846, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 481, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 491, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 483, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$931_$", "typeString": "type(library SSVStorage)"}}, "id": 485, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 930, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$908_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 487, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 882, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 489, "indexExpression": {"id": 488, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 490, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 492, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 494, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 468, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, {"id": 495, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 493, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 379, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$861_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 497, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 499, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 471, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 468, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 499, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}, "typeName": {"id": 467, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 466, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "1826:10:2"}, "referencedDeclaration": 861, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 470, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 499, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 469, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 472, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 500, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 501, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [673], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVStorageProtocol": [996], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 669, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 502, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 503, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 852, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 504, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 736, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 505, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 669, "sourceUnit": 997, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 668, "linearizedBaseContracts": [668], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 508, "libraryName": {"id": 506, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 735, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 507, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 531, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 516, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 517, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 520, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 522, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 523, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 936, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 519, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 518, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 526, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 511, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 515, "id": 530, "nodeType": "Return", "src": "443:96:3"}]}, "id": 532, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 512, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 511, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 532, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 510, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 509, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "374:15:3"}, "referencedDeclaration": 973, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 515, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 514, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 532, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 513, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 668, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 570, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 541, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 540, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 543, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 544, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 546, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 951, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 548, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 547, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 532, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 549, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 551, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 552, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 554, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 936, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 557, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 556, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 555, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 561, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 568, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 562, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 535, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 564, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 565, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 537, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 569, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 571, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 538, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 535, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 571, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 534, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 533, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "578:15:3"}, "referencedDeclaration": 973, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 537, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 571, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 536, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 539, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 668, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 595, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 577, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 579, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 581, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 580, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 624, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 582, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 584, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 585, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 574, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 587, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 590, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 589, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 588, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 592, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 594, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 596, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 575, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 574, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 596, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 573, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 572, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "956:15:3"}, "referencedDeclaration": 973, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 576, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 668, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 623, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 604, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 605, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 613, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 608, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 607, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 606, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 611, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 612, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 942, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 614, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 615, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 616, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 618, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 599, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 619, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 603, "id": 622, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 624, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 600, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 599, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 624, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 598, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 597, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1141:15:3"}, "referencedDeclaration": 973, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 603, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 602, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 624, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 601, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 668, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 666, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 635, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 634, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 596, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 637, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 638, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 629, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 650, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 647, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 648, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 649, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 651, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 654, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 653, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 652, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 656, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 664, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 663, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 658, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 851, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$851_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 848, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 661, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 662, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 665, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 646, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 640, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 627, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 642, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 939, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 643, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 631, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 645, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 667, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 632, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 627, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 626, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 625, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1351:15:3"}, "referencedDeclaration": 973, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 629, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 628, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 631, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 667, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 630, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 633, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 668, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 669, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1148], "IERC20": [1074], "ISSVNetworkCore": [851], "SSVModules": [861], "SSVStorage": [931], "StorageData": [908]}, "id": 932, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 853, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 854, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 852, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 855, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 1149, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 856, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 932, "sourceUnit": 1075, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 861, "members": [{"id": 857, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 858, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 859, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 860, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 908, "members": [{"constant": false, "id": 866, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 865, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 863, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 864, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 871, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 870, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 868, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 869, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 876, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 875, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 873, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 874, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 882, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 881, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 879, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 878, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 861, "src": "1006:10:4"}, "referencedDeclaration": 861, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$861", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$861_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 880, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 887, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 886, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 884, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 885, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 893, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$774_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 892, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 889, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$774_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 891, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 890, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 774, "src": "1322:40:4"}, "referencedDeclaration": 774, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$774_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 899, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$764_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 898, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 895, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$764_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 897, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 896, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 764, "src": "1488:24:4"}, "referencedDeclaration": 764, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$764_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 903, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}, "typeName": {"id": 902, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 901, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1074, "src": "1599:6:4"}, "referencedDeclaration": 1074, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1074", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 907, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 908, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 906, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 905, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1686:16:4"}, "referencedDeclaration": 1080, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 932, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 931, "linearizedBaseContracts": [931], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 918, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 931, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 909, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 917, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 912, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 910, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 915, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 916, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 929, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [925], "declarations": [{"constant": false, "id": 925, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 929, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 924, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 927, "initialValue": {"id": 926, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 918, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 925, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 922, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 928, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 930, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 919, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 923, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 922, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 930, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 921, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 920, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 908, "src": "1891:11:4"}, "referencedDeclaration": 908, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$908_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 931, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 932, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [996], "StorageProtocol": [973]}, "id": 997, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 933, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 973, "members": [{"constant": false, "id": 936, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 935, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 939, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 938, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 942, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 941, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 945, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 944, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 948, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 947, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 951, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 950, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 954, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 953, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 957, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 956, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 960, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 959, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 963, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 962, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 966, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 965, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 969, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 968, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 972, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 973, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 971, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 997, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 996, "linearizedBaseContracts": [996], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 983, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 996, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 982, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 978, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 977, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 976, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 975, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 994, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [990], "declarations": [{"constant": false, "id": 990, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 994, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 989, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 992, "initialValue": {"id": 991, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 983, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 990, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 987, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 993, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 995, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 984, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 988, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 987, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 995, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 986, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 985, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "1711:15:5"}, "referencedDeclaration": 973, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 996, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 997, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [673], "Types256": [735], "Types64": [686]}, "id": 736, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 670, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 673, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 736, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 671, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 686, "linearizedBaseContracts": [686], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 684, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 680, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 675, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 681, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 679, "id": 683, "nodeType": "Return", "src": "212:30:6"}]}, "id": 685, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 676, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 675, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 685, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 674, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 679, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 678, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 685, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 677, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 686, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 736, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 735, "linearizedBaseContracts": [735], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 714, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 694, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 699, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 697, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 695, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 698, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 700, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 693, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 704, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 711, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 708, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 707, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 734, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 710, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 706, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 705, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 692, "id": 713, "nodeType": "Return", "src": "425:50:6"}]}, "id": 715, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 689, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 688, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 715, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 687, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 691, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 715, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 690, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 735, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 733, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 727, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 723, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 717, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 724, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 673, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 726, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 722, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 729, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 730, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 731, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 717, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 721, "id": 732, "nodeType": "Return", "src": "638:12:6"}]}, "id": 734, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 718, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 717, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 734, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 721, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 720, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 734, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 719, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 735, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 736, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "DAO": [43], "DEDUCTED_DIGITS": [673], "IERC20": [1074], "ISSVDAO": [369], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVDAO": [277], "SSVModules": [861], "SSVStorage": [931], "SSVStorageProtocol": [996], "StorageData": [908], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 44, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 44, "sourceUnit": 278, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 277, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 43, "linearizedBaseContracts": [43, 277, 369, 851], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 7, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "147:29:7", "nodeType": "VariableDeclaration", "scope": 43, "src": "123:63:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 5, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "123:6:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 6, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "179:7:7", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"constant": false, "id": 9, "mutability": "mutable", "name": "_assetVar", "nameLocation": "205:9:7", "nodeType": "VariableDeclaration", "scope": 43, "src": "192:22:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 8, "name": "bool", "nodeType": "ElementaryTypeName", "src": "192:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "private"}, {"body": {"id": 27, "nodeType": "Block", "src": "235:111:7", "statements": [{"assignments": [14], "declarations": [{"constant": false, "id": 14, "mutability": "mutable", "name": "sp", "nameLocation": "269:2:7", "nodeType": "VariableDeclaration", "scope": 27, "src": "245:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 13, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 12, "name": "StorageProtocol", "nameLocations": ["245:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "245:15:7"}, "referencedDeclaration": 973, "src": "245:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 18, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 15, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "274:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 16, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "293:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "274:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 17, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "274:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "245:54:7"}, {"expression": {"id": 25, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 19, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14, "src": "309:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 21, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "312:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "309:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 24, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 22, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "325:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 23, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "337:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "325:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "309:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 26, "nodeType": "ExpressionStatement", "src": "309:30:7"}]}, "id": 28, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 10, "nodeType": "ParameterList", "parameters": [], "src": "232:2:7"}, "returnParameters": {"id": 11, "nodeType": "ParameterList", "parameters": [], "src": "235:0:7"}, "scope": 43, "src": "221:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 41, "nodeType": "Block", "src": "423:46:7", "statements": [{"expression": {"arguments": [{"id": 38, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, "src": "455:6:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 35, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "433:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$43", "typeString": "contract DAO"}}, "id": 37, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "438:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 96, "src": "433:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 39, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "433:29:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 40, "nodeType": "ExpressionStatement", "src": "433:29:7"}]}, "functionSelector": "57877d3f", "id": 42, "implemented": true, "kind": "function", "modifiers": [], "name": "helper_updateNetworkFee", "nameLocation": "361:23:7", "nodeType": "FunctionDefinition", "parameters": {"id": 31, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 30, "mutability": "mutable", "name": "amount", "nameLocation": "393:6:7", "nodeType": "VariableDeclaration", "scope": 42, "src": "385:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 29, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "385:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "384:16:7"}, "returnParameters": {"id": 34, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 33, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 42, "src": "417:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 32, "name": "bool", "nodeType": "ElementaryTypeName", "src": "417:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "416:6:7"}, "scope": 43, "src": "352:117:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 44, "src": "94:377:7", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:427:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [500], "Counters": [1148], "DEDUCTED_DIGITS": [673], "IERC20": [1074], "ISSVDAO": [369], "ISSVNetworkCore": [851], "ProtocolLib": [668], "SSVDAO": [277], "SSVModules": [861], "SSVStorage": [931], "SSVStorageProtocol": [996], "StorageData": [908], "StorageProtocol": [973], "Types256": [735], "Types64": [686]}, "id": 278, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 45, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 46, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 370, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 47, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 736, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 48, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 669, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 49, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 278, "sourceUnit": 501, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 50, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 369, "src": "233:7:8"}, "id": 51, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 277, "linearizedBaseContracts": [277, 369, 851], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 54, "libraryName": {"id": 52, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 686, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 53, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 57, "libraryName": {"id": 55, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 735, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 56, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 61, "libraryName": {"id": 58, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 668, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 60, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 59, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "332:15:8"}, "referencedDeclaration": 973, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 64, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 277, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 62, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 63, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [288], "body": {"id": 95, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [72], "declarations": [{"constant": false, "id": 72, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 95, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 71, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 70, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "491:15:8"}, "referencedDeclaration": 973, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 76, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 73, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 74, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 75, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [78], "declarations": [{"constant": false, "id": 78, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 95, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 77, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 81, "initialValue": {"expression": {"id": 79, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 72, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 80, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 948, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 85, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 66, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 82, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 72, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 84, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 571, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$973_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 86, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 87, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 89, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 78, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 90, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 685, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 91, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 92, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 66, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 88, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 93, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 94, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 96, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 68, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 67, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 66, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 96, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 65, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 69, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 277, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [294], "body": {"id": 151, "nodeType": "Block", "src": "763:447:8", "statements": [{"assignments": [104], "declarations": [{"constant": false, "id": 104, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 103, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 102, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 973, "src": "773:15:8"}, "referencedDeclaration": 973, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 108, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 105, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 107, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [110], "declarations": [{"constant": false, "id": 110, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 109, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 114, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 111, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 112, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 113, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [116], "declarations": [{"constant": false, "id": 116, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 151, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 115, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 120, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 117, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 118, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 624, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$973_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 119, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 123, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 121, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 122, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 128, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 127, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 124, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 806, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 126, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 135, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 129, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 954, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 134, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 132, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 116, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 133, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 136, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"arguments": [{"expression": {"id": 140, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1124:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 141, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1128:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1124:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 142, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1136:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 137, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 500, "src": "1100:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$500_$", "typeString": "type(library CoreLib)"}}, "id": 139, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 411, "src": "1100:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 143, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1100:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 144, "nodeType": "ExpressionStatement", "src": "1100:43:8"}, {"eventCall": {"arguments": [{"id": 146, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, "src": "1184:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 147, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1192:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1196:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1192:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 145, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 364, "src": "1159:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 149, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1159:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 150, "nodeType": "EmitStatement", "src": "1154:49:8"}]}, "functionSelector": "d2231741", "id": 152, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 100, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 99, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 98, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 152, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 97, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 101, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 277, "src": "696:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [300], "body": {"id": 170, "nodeType": "Block", "src": "1293:136:8", "statements": [{"expression": {"id": 164, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 158, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1303:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1322:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1303:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1303:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 162, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1329:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 969, "src": "1303:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 163, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 154, "src": "1354:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1303:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 165, "nodeType": "ExpressionStatement", "src": "1303:61:8"}, {"eventCall": {"arguments": [{"id": 167, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 154, "src": "1411:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 166, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 334, "src": "1379:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 168, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1379:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 169, "nodeType": "EmitStatement", "src": "1374:48:8"}]}, "functionSelector": "3631983f", "id": 171, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1225:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 156, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1284:8:8"}, "parameters": {"id": 155, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 154, "mutability": "mutable", "name": "percentage", "nameLocation": "1263:10:8", "nodeType": "VariableDeclaration", "scope": 171, "src": "1256:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 153, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1256:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1255:19:8"}, "returnParameters": {"id": 157, "nodeType": "ParameterList", "parameters": [], "src": "1293:0:8"}, "scope": 277, "src": "1216:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [306], "body": {"id": 189, "nodeType": "Block", "src": "1515:144:8", "statements": [{"expression": {"id": 183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 177, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1525:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 179, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1544:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1525:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 180, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 181, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1551:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 963, "src": "1525:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 182, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, "src": "1578:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1525:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 184, "nodeType": "ExpressionStatement", "src": "1525:66:8"}, {"eventCall": {"arguments": [{"id": 186, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 173, "src": "1638:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 185, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 338, "src": "1606:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1606:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 188, "nodeType": "EmitStatement", "src": "1601:51:8"}]}, "functionSelector": "79e3e4e4", "id": 190, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1444:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 175, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1506:8:8"}, "parameters": {"id": 174, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 173, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1482:13:8", "nodeType": "VariableDeclaration", "scope": 190, "src": "1475:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 172, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1474:22:8"}, "returnParameters": {"id": 176, "nodeType": "ParameterList", "parameters": [], "src": "1515:0:8"}, "scope": 277, "src": "1435:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [312], "body": {"id": 208, "nodeType": "Block", "src": "1745:144:8", "statements": [{"expression": {"id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 196, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1755:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1774:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "1755:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 199, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 200, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1781:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 966, "src": "1755:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 201, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 192, "src": "1808:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1755:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 203, "nodeType": "ExpressionStatement", "src": "1755:66:8"}, {"eventCall": {"arguments": [{"id": 205, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 192, "src": "1868:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 204, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 342, "src": "1836:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 207, "nodeType": "EmitStatement", "src": "1831:51:8"}]}, "functionSelector": "eb608022", "id": 209, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1674:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 194, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1736:8:8"}, "parameters": {"id": 193, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 192, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1712:13:8", "nodeType": "VariableDeclaration", "scope": 209, "src": "1705:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 191, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1705:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1704:22:8"}, "returnParameters": {"id": 195, "nodeType": "ParameterList", "parameters": [], "src": "1745:0:8"}, "scope": 277, "src": "1665:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [318], "body": {"id": 235, "nodeType": "Block", "src": "1970:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 215, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "1984:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 216, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 64, "src": "1993:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1984:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 222, "nodeType": "IfStatement", "src": "1980:106:8", "trueBody": {"id": 221, "nodeType": "Block", "src": "2024:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 218, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "2045:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 219, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2045:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 220, "nodeType": "RevertStatement", "src": "2038:37:8"}]}}, {"expression": {"id": 229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 223, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2096:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2115:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2096:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 227, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2122:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 957, "src": "2096:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 228, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "2155:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2096:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 230, "nodeType": "ExpressionStatement", "src": "2096:65:8"}, {"eventCall": {"arguments": [{"id": 232, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 211, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 231, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 346, "src": "2176:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 233, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2176:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 234, "nodeType": "EmitStatement", "src": "2171:46:8"}]}, "functionSelector": "6512447d", "id": 236, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1904:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 213, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1961:8:8"}, "parameters": {"id": 212, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 211, "mutability": "mutable", "name": "blocks", "nameLocation": "1944:6:8", "nodeType": "VariableDeclaration", "scope": 236, "src": "1937:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 210, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1937:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1936:15:8"}, "returnParameters": {"id": 214, "nodeType": "ParameterList", "parameters": [], "src": "1970:0:8"}, "scope": 277, "src": "1895:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [324], "body": {"id": 256, "nodeType": "Block", "src": "2308:147:8", "statements": [{"expression": {"id": 250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 242, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2318:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2337:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2318:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 245, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2318:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 246, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2344:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 960, "src": "2318:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 247, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, "src": "2375:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2382:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 715, "src": "2375:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 249, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2375:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2318:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 251, "nodeType": "ExpressionStatement", "src": "2318:72:8"}, {"eventCall": {"arguments": [{"id": 253, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 238, "src": "2441:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 252, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 350, "src": "2405:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 255, "nodeType": "EmitStatement", "src": "2400:48:8"}]}, "functionSelector": "b4c9c408", "id": 257, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2239:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 240, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2299:8:8"}, "parameters": {"id": 239, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 238, "mutability": "mutable", "name": "amount", "nameLocation": "2282:6:8", "nodeType": "VariableDeclaration", "scope": 257, "src": "2274:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 237, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2274:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2273:16:8"}, "returnParameters": {"id": 241, "nodeType": "ParameterList", "parameters": [], "src": "2308:0:8"}, "scope": 277, "src": "2230:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [330], "body": {"id": 275, "nodeType": "Block", "src": "2528:114:8", "statements": [{"expression": {"id": 269, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 263, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "2538:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$996_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 265, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2557:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 995, "src": "2538:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$973_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2538:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$973_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 267, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2564:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 972, "src": "2538:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 268, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 259, "src": "2581:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2538:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 270, "nodeType": "ExpressionStatement", "src": "2538:49:8"}, {"eventCall": {"arguments": [{"id": 272, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 259, "src": "2628:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 271, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 368, "src": "2602:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 273, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 274, "nodeType": "EmitStatement", "src": "2597:38:8"}]}, "functionSelector": "e39c6744", "id": 276, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2470:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 261, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2519:8:8"}, "parameters": {"id": 260, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 259, "mutability": "mutable", "name": "maxFee", "nameLocation": "2502:6:8", "nodeType": "VariableDeclaration", "scope": 276, "src": "2495:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 258, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2495:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2494:15:8"}, "returnParameters": {"id": 262, "nodeType": "ParameterList", "parameters": [], "src": "2528:0:8"}, "scope": 277, "src": "2461:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 278, "src": "214:2430:8", "usedErrors": [792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850]}], "src": "45:2600:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1074]}, "id": 1075, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 998, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 999, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1074, "linearizedBaseContracts": [1074], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1000, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1008, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1007, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1002, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1001, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1004, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1003, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1006, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1008, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1005, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1009, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1017, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1016, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1011, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1010, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1013, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1012, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1015, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1017, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1014, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1018, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1023, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1019, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1022, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1021, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1023, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1020, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1074, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1024, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1031, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1027, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1026, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1031, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1025, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1030, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1029, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1031, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1028, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1074, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1032, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1041, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1037, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1033, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1036, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1035, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1039, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1041, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1038, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1074, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1042, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1051, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1047, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1044, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1043, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1046, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1045, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1049, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1051, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1074, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1052, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1061, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1057, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1054, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1053, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1056, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1055, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1059, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1061, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1058, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1074, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1062, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1073, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1069, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1064, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1063, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1066, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1065, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1068, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1067, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1072, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1071, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1073, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1070, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1074, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1075, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1148]}, "id": 1149, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1076, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1077, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. 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;`"}, "fullyImplemented": true, "id": 1148, "linearizedBaseContracts": [1148], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1080, "members": [{"constant": false, "id": 1079, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1080, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1078, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1148, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1091, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1088, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1083, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1089, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1087, "id": 1090, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1092, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1084, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1083, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1092, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1082, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1081, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "844:7:10"}, "referencedDeclaration": 1080, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1087, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1086, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1092, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1085, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1148, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1105, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1104, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1102, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1098, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1095, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1100, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1101, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1103, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1106, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1096, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1095, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1106, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1094, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1093, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "964:7:10"}, "referencedDeclaration": 1080, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1097, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1148, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1133, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1113], "declarations": [{"constant": false, "id": 1113, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1133, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1112, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1116, "initialValue": {"expression": {"id": 1114, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1109, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1115, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1118, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1117, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1123, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1132, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1130, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1124, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1109, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1126, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1127, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1113, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1131, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1134, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1110, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1109, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1134, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1108, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1107, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1093:7:10"}, "referencedDeclaration": 1080, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1111, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1148, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1146, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1140, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1137, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1142, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1079, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1143, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1145, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1147, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1138, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1137, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1147, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1136, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1135, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1080, "src": "1324:7:10"}, "referencedDeclaration": 1080, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1080_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1139, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1148, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1149, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:377:7:-:0;;;221:125;;;;;;;;;;245:26;274:25;:23;;;;;:25;;:::i;:::-;245:54;;325:14;309:2;:13;;;:30;;;;;;;;;;;;;;;;;;235:111;94:377;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:377:7:-;;;;;;;", "srcmap-runtime": "94:377:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;352:117:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:329:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;352:117:7:-;417:4;433;:21;;;455:6;433:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;352:117;;;:::o;1895:329:8:-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:90::-;1768:7;1811:5;1804:13;1797:21;1786:32;;1734:90;;;:::o;1830:109::-;1911:21;1926:5;1911:21;:::i;:::-;1906:3;1899:34;1830:109;;:::o;1945:210::-;2032:4;2070:2;2059:9;2055:18;2047:26;;2083:65;2145:1;2134:9;2130:17;2121:6;2083:65;:::i;:::-;1945:210;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:115::-;2708:23;2725:5;2708:23;:::i;:::-;2703:3;2696:36;2623:115;;:::o;2744:218::-;2835:4;2873:2;2862:9;2858:18;2850:26;;2886:69;2952:1;2941:9;2937:17;2928:6;2886:69;:::i;:::-;2744:218;;;;:::o;2968:222::-;3061:4;3099:2;3088:9;3084:18;3076:26;;3112:71;3180:1;3169:9;3165:17;3156:6;3112:71;:::i;:::-;2968:222;;;;:::o;3196:180::-;3244:77;3241:1;3234:88;3341:4;3338:1;3331:15;3365:4;3362:1;3355:15;3382:208;3421:4;3441:19;3458:1;3441:19;:::i;:::-;3436:24;;3474:19;3491:1;3474:19;:::i;:::-;3469:24;;3517:1;3514;3510:9;3502:17;;3541:18;3535:4;3532:28;3529:54;;;3563:18;;:::i;:::-;3529:54;3382:208;;;;:::o;3596:126::-;3633:7;3673:42;3666:5;3662:54;3651:65;;3596:126;;;:::o;3728:96::-;3765:7;3794:24;3812:5;3794:24;:::i;:::-;3783:35;;3728:96;;;:::o;3830:118::-;3917:24;3935:5;3917:24;:::i;:::-;3912:3;3905:37;3830:118;;:::o;3954:332::-;4075:4;4113:2;4102:9;4098:18;4090:26;;4126:71;4194:1;4183:9;4179:17;4170:6;4126:71;:::i;:::-;4207:72;4275:2;4264:9;4260:18;4251:6;4207:72;:::i;:::-;3954:332;;;;;:::o;4292:194::-;4332:4;4352:20;4370:1;4352:20;:::i;:::-;4347:25;;4386:20;4404:1;4386:20;:::i;:::-;4381:25;;4430:1;4427;4423:9;4415:17;;4454:1;4448:4;4445:11;4442:37;;;4459:18;;:::i;:::-;4442:37;4292:194;;;;:::o;4492:410::-;4532:7;4555:20;4573:1;4555:20;:::i;:::-;4550:25;;4589:20;4607:1;4589:20;:::i;:::-;4584:25;;4644:1;4641;4637:9;4666:30;4684:11;4666:30;:::i;:::-;4655:41;;4845:1;4836:7;4832:15;4829:1;4826:22;4806:1;4799:9;4779:83;4756:139;;4875:18;;:::i;:::-;4756:139;4540:362;4492:410;;;;:::o;4908:169::-;4992:11;5026:6;5021:3;5014:19;5066:4;5061:3;5057:14;5042:29;;4908:169;;;;:::o;5083:168::-;5223:20;5219:1;5211:6;5207:14;5200:44;5083:168;:::o;5257:366::-;5399:3;5420:67;5484:2;5479:3;5420:67;:::i;:::-;5413:74;;5496:93;5585:3;5496:93;:::i;:::-;5614:2;5609:3;5605:12;5598:19;;5257:366;;;:::o;5629:419::-;5795:4;5833:2;5822:9;5818:18;5810:26;;5882:9;5876:4;5872:20;5868:1;5857:9;5853:17;5846:47;5910:131;6036:4;5910:131;:::i;:::-;5902:139;;5629:419;;;:::o;6054:180::-;6102:77;6099:1;6092:88;6199:4;6196:1;6189:15;6223:4;6220:1;6213:15;6240:185;6280:1;6297:20;6315:1;6297:20;:::i;:::-;6292:25;;6331:20;6349:1;6331:20;:::i;:::-;6326:25;;6370:1;6360:35;;6375:18;;:::i;:::-;6360:35;6417:1;6414;6410:9;6405:14;;6240:185;;;;:::o;6431:275::-;6470:7;6493:19;6510:1;6493:19;:::i;:::-;6488:24;;6526:19;6543:1;6526:19;:::i;:::-;6521:24;;6580:1;6577;6573:9;6602:29;6619:11;6602:29;:::i;:::-;6591:40;;6663:11;6654:7;6651:24;6641:58;;6679:18;;:::i;:::-;6641:58;6478:228;6431:275;;;;:::o;6712:205::-;6751:3;6770:19;6787:1;6770:19;:::i;:::-;6765:24;;6803:19;6820:1;6803:19;:::i;:::-;6798:24;;6845:1;6842;6838:9;6831:16;;6868:18;6863:3;6860:27;6857:53;;;6890:18;;:::i;:::-;6857:53;6712:205;;;;:::o;6923:332::-;7044:4;7082:2;7071:9;7067:18;7059:26;;7095:71;7163:1;7152:9;7148:17;7139:6;7095:71;:::i;:::-;7176:72;7244:2;7233:9;7229:18;7220:6;7176:72;:::i;:::-;6923:332;;;;;:::o;7261:116::-;7331:21;7346:5;7331:21;:::i;:::-;7324:5;7321:32;7311:60;;7367:1;7364;7357:12;7311:60;7261:116;:::o;7383:137::-;7437:5;7468:6;7462:13;7453:22;;7484:30;7508:5;7484:30;:::i;:::-;7383:137;;;;:::o;7526:345::-;7593:6;7642:2;7630:9;7621:7;7617:23;7613:32;7610:119;;;7648:79;;:::i;:::-;7610:119;7768:1;7793:61;7846:7;7837:6;7826:9;7822:22;7793:61;:::i;:::-;7783:71;;7739:125;7526:345;;;;:::o;7877:176::-;7909:1;7926:20;7944:1;7926:20;:::i;:::-;7921:25;;7960:20;7978:1;7960:20;:::i;:::-;7955:25;;7999:1;7989:35;;8004:18;;:::i;:::-;7989:35;8045:1;8042;8038:9;8033:14;;7877:176;;;;:::o;8059:172::-;8199:24;8195:1;8187:6;8183:14;8176:48;8059:172;:::o;8237:366::-;8379:3;8400:67;8464:2;8459:3;8400:67;:::i;:::-;8393:74;;8476:93;8565:3;8476:93;:::i;:::-;8594:2;8589:3;8585:12;8578:19;;8237:366;;;:::o;8609:419::-;8775:4;8813:2;8802:9;8798:18;8790:26;;8862:9;8856:4;8852:20;8848:1;8837:9;8833:17;8826:47;8890:131;9016:4;8890:131;:::i;:::-;8882:139;;8609:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"helper_updateNetworkFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b61067a1760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b61104780620001146000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220a4dd777dfd73532ace62d77f94aa6c988c06b86aa638688264b5e7a5d57c9a3e64736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c806379e3e4e41161006657806379e3e4e41461011c578063b4c9c40814610138578063d223174114610154578063e39c674414610170578063eb6080221461018c57610093565b80631f1f9fd5146100985780633631983f146100b457806357877d3f146100d05780636512447d14610100575b600080fd5b6100b260048036038101906100ad9190610b04565b6101a8565b005b6100ce60048036038101906100c99190610b71565b610234565b005b6100ea60048036038101906100e59190610b04565b6102a0565b6040516100f79190610bb9565b60405180910390f35b61011a60048036038101906101159190610b71565b610312565b005b61013660048036038101906101319190610b71565b6103cf565b005b610152600480360381019061014d9190610b04565b61043b565b005b61016e60048036038101906101699190610b04565b6104af565b005b61018a60048036038101906101859190610b71565b6105a2565b005b6101a660048036038101906101a19190610b71565b61060e565b005b60006101b261067a565b905060008160000160109054906101000a900467ffffffffffffffff1690506101e483836106b690919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6102188267ffffffffffffffff1661074c565b84604051610227929190610be3565b60405180910390a1505050565b8061023d61067a565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102959190610c1b565b60405180910390a150565b60003073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5836040518263ffffffff1660e01b81526004016102db9190610c36565b600060405180830381600087803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50505050919050565b620189c067ffffffffffffffff168167ffffffffffffffff161015610363576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061036c61067a565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103c49190610c1b565b60405180910390a150565b806103d861067a565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104309190610c1b565b60405180910390a150565b6104448161076e565b61044c61067a565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516104a49190610c36565b60405180910390a150565b60006104b961067a565b905060006104c68361076e565b905060006104d3836107e8565b90508067ffffffffffffffff168267ffffffffffffffff161115610523576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818161052f9190610c80565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506105633385610882565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c58433604051610594929190610cfd565b60405180910390a150505050565b806105ab61067a565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106039190610c1b565b60405180910390a150565b8061061761067a565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf8160405161066f9190610c1b565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106ad9190610d26565b90508091505090565b6106bf82610965565b6106c8826109be565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff16021790555061071e8161076e565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107679190610d5a565b9050919050565b600062989680680100000000000000006107889190610d5a565b8211156107ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c190610df9565b60405180910390fd5b629896806107d783610a33565b6107e19190610e48565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108449190610c80565b61084e9190610e79565b6108589190610e79565b8260010160009054906101000a900467ffffffffffffffff1661087b9190610eb6565b9050919050565b61088a610a8d565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016108e8929190610ef2565b6020604051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b9190610f47565b610961576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61096e816107e8565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109ff9190610d26565b610a099190610e79565b8260000160189054906101000a900467ffffffffffffffff16610a2c9190610eb6565b9050919050565b6000806298968083610a459190610f74565b14610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90610ff1565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610ac09190610d26565b90508091505090565b600080fd5b6000819050919050565b610ae181610ace565b8114610aec57600080fd5b50565b600081359050610afe81610ad8565b92915050565b600060208284031215610b1a57610b19610ac9565b5b6000610b2884828501610aef565b91505092915050565b600067ffffffffffffffff82169050919050565b610b4e81610b31565b8114610b5957600080fd5b50565b600081359050610b6b81610b45565b92915050565b600060208284031215610b8757610b86610ac9565b5b6000610b9584828501610b5c565b91505092915050565b60008115159050919050565b610bb381610b9e565b82525050565b6000602082019050610bce6000830184610baa565b92915050565b610bdd81610ace565b82525050565b6000604082019050610bf86000830185610bd4565b610c056020830184610bd4565b9392505050565b610c1581610b31565b82525050565b6000602082019050610c306000830184610c0c565b92915050565b6000602082019050610c4b6000830184610bd4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c8b82610b31565b9150610c9683610b31565b9250828203905067ffffffffffffffff811115610cb657610cb5610c51565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce782610cbc565b9050919050565b610cf781610cdc565b82525050565b6000604082019050610d126000830185610bd4565b610d1f6020830184610cee565b9392505050565b6000610d3182610ace565b9150610d3c83610ace565b9250828203905081811115610d5457610d53610c51565b5b92915050565b6000610d6582610ace565b9150610d7083610ace565b9250828202610d7e81610ace565b91508282048414831517610d9557610d94610c51565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610de3601283610d9c565b9150610dee82610dad565b602082019050919050565b60006020820190508181036000830152610e1281610dd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610e5382610ace565b9150610e5e83610ace565b925082610e6e57610e6d610e19565b5b828204905092915050565b6000610e8482610b31565b9150610e8f83610b31565b9250828202610e9d81610b31565b9150808214610eaf57610eae610c51565b5b5092915050565b6000610ec182610b31565b9150610ecc83610b31565b9250828201905067ffffffffffffffff811115610eec57610eeb610c51565b5b92915050565b6000604082019050610f076000830185610cee565b610f146020830184610bd4565b9392505050565b610f2481610b9e565b8114610f2f57600080fd5b50565b600081519050610f4181610f1b565b92915050565b600060208284031215610f5d57610f5c610ac9565b5b6000610f6b84828501610f32565b91505092915050565b6000610f7f82610ace565b9150610f8a83610ace565b925082610f9a57610f99610e19565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610fdb601683610d9c565b9150610fe682610fa5565b602082019050919050565b6000602082019050818103600083015261100a81610fce565b905091905056fea2646970667358221220a4dd777dfd73532ace62d77f94aa6c988c06b86aa638688264b5e7a5d57c9a3e64736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. 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;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file +{"sources": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "exportedSymbols": {"ISSVDAO": [382], "ISSVNetworkCore": [864]}, "id": 383, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 292, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:0"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "./ISSVNetworkCore.sol", "id": 293, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 383, "sourceUnit": 865, "src": "70:31:0", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 294, "name": "ISSVNetworkCore", "nameLocations": ["124:15:0"], "nodeType": "IdentifierPath", "referencedDeclaration": 864, "src": "124:15:0"}, "id": 295, "nodeType": "InheritanceSpecifier", "src": "124:15:0"}], "canonicalName": "ISSVDAO", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": false, "id": 382, "linearizedBaseContracts": [382, 864], "name": "ISSVDAO", "nameLocation": "113:7:0", "nodeType": "ContractDefinition", "nodes": [{"documentation": {"id": 296, "nodeType": "StructuredDocumentation", "src": "146:90:0", "text": "@notice Updates the network fee\n @param fee The new network fee (SSV) to be set"}, "functionSelector": "1f1f9fd5", "id": 301, "implemented": false, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "250:16:0", "nodeType": "FunctionDefinition", "parameters": {"id": 299, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 298, "mutability": "mutable", "name": "fee", "nameLocation": "275:3:0", "nodeType": "VariableDeclaration", "scope": 301, "src": "267:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 297, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "267:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "266:13:0"}, "returnParameters": {"id": 300, "nodeType": "ParameterList", "parameters": [], "src": "288:0:0"}, "scope": 382, "src": "241:48:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 302, "nodeType": "StructuredDocumentation", "src": "295:93:0", "text": "@notice Withdraws network earnings\n @param amount The amount (SSV) to be withdrawn"}, "functionSelector": "d2231741", "id": 307, "implemented": false, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "402:23:0", "nodeType": "FunctionDefinition", "parameters": {"id": 305, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 304, "mutability": "mutable", "name": "amount", "nameLocation": "434:6:0", "nodeType": "VariableDeclaration", "scope": 307, "src": "426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 303, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "425:16:0"}, "returnParameters": {"id": 306, "nodeType": "ParameterList", "parameters": [], "src": "450:0:0"}, "scope": 382, "src": "393:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 308, "nodeType": "StructuredDocumentation", "src": "457:124:0", "text": "@notice Updates the limit on the percentage increase in operator fees\n @param percentage The new percentage limit"}, "functionSelector": "3631983f", "id": 313, "implemented": false, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "595:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 311, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 310, "mutability": "mutable", "name": "percentage", "nameLocation": "633:10:0", "nodeType": "VariableDeclaration", "scope": 313, "src": "626:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 309, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "626:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "625:19:0"}, "returnParameters": {"id": 312, "nodeType": "ParameterList", "parameters": [], "src": "653:0:0"}, "scope": 382, "src": "586:68:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 314, "nodeType": "StructuredDocumentation", "src": "660:113:0", "text": "@notice Updates the period for declaring operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "79e3e4e4", "id": 319, "implemented": false, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "787:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 317, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 316, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "825:13:0", "nodeType": "VariableDeclaration", "scope": 319, "src": "818:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 315, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "818:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "817:22:0"}, "returnParameters": {"id": 318, "nodeType": "ParameterList", "parameters": [], "src": "848:0:0"}, "scope": 382, "src": "778:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 320, "nodeType": "StructuredDocumentation", "src": "855:113:0", "text": "@notice Updates the period for executing operator fees\n @param timeInSeconds The new period in seconds"}, "functionSelector": "eb608022", "id": 325, "implemented": false, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "982:30:0", "nodeType": "FunctionDefinition", "parameters": {"id": 323, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 322, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1020:13:0", "nodeType": "VariableDeclaration", "scope": 325, "src": "1013:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 321, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1013:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1012:22:0"}, "returnParameters": {"id": 324, "nodeType": "ParameterList", "parameters": [], "src": "1043:0:0"}, "scope": 382, "src": "973:71:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 326, "nodeType": "StructuredDocumentation", "src": "1050:114:0", "text": "@notice Updates the liquidation threshold period\n @param blocks The new liquidation threshold in blocks"}, "functionSelector": "6512447d", "id": 331, "implemented": false, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1178:32:0", "nodeType": "FunctionDefinition", "parameters": {"id": 329, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 328, "mutability": "mutable", "name": "blocks", "nameLocation": "1218:6:0", "nodeType": "VariableDeclaration", "scope": 331, "src": "1211:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 327, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1211:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1210:15:0"}, "returnParameters": {"id": 330, "nodeType": "ParameterList", "parameters": [], "src": "1234:0:0"}, "scope": 382, "src": "1169:66:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 332, "nodeType": "StructuredDocumentation", "src": "1241:136:0", "text": "@notice Updates the minimum collateral required to prevent liquidation\n @param amount The new minimum collateral amount (SSV)"}, "functionSelector": "b4c9c408", "id": 337, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "1391:34:0", "nodeType": "FunctionDefinition", "parameters": {"id": 335, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 334, "mutability": "mutable", "name": "amount", "nameLocation": "1434:6:0", "nodeType": "VariableDeclaration", "scope": 337, "src": "1426:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 333, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1426:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1425:16:0"}, "returnParameters": {"id": 336, "nodeType": "ParameterList", "parameters": [], "src": "1450:0:0"}, "scope": 382, "src": "1382:69:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 338, "nodeType": "StructuredDocumentation", "src": "1457:123:0", "text": "@notice Updates the maximum fee an operator that uses SSV token can set\n @param maxFee The new maximum fee (SSV)"}, "functionSelector": "e39c6744", "id": 343, "implemented": false, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "1594:24:0", "nodeType": "FunctionDefinition", "parameters": {"id": 341, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 340, "mutability": "mutable", "name": "maxFee", "nameLocation": "1626:6:0", "nodeType": "VariableDeclaration", "scope": 343, "src": "1619:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 339, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1619:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1618:15:0"}, "returnParameters": {"id": 342, "nodeType": "ParameterList", "parameters": [], "src": "1642:0:0"}, "scope": 382, "src": "1585:58:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"anonymous": false, "eventSelector": "2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342", "id": 347, "name": "OperatorFeeIncreaseLimitUpdated", "nameLocation": "1655:31:0", "nodeType": "EventDefinition", "parameters": {"id": 346, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 345, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1694:5:0", "nodeType": "VariableDeclaration", "scope": 347, "src": "1687:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 344, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1687:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1686:14:0"}, "src": "1649:52:0"}, {"anonymous": false, "eventSelector": "5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1", "id": 351, "name": "DeclareOperatorFeePeriodUpdated", "nameLocation": "1713:31:0", "nodeType": "EventDefinition", "parameters": {"id": 350, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 349, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1752:5:0", "nodeType": "VariableDeclaration", "scope": 351, "src": "1745:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 348, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1745:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1744:14:0"}, "src": "1707:52:0"}, {"anonymous": false, "eventSelector": "f6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf", "id": 355, "name": "ExecuteOperatorFeePeriodUpdated", "nameLocation": "1771:31:0", "nodeType": "EventDefinition", "parameters": {"id": 354, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 353, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1810:5:0", "nodeType": "VariableDeclaration", "scope": 355, "src": "1803:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 352, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1803:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1802:14:0"}, "src": "1765:52:0"}, {"anonymous": false, "eventSelector": "42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f", "id": 359, "name": "LiquidationThresholdPeriodUpdated", "nameLocation": "1829:33:0", "nodeType": "EventDefinition", "parameters": {"id": 358, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 357, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1870:5:0", "nodeType": "VariableDeclaration", "scope": 359, "src": "1863:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 356, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1863:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1862:14:0"}, "src": "1823:54:0"}, {"anonymous": false, "eventSelector": "d363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960", "id": 363, "name": "MinimumLiquidationCollateralUpdated", "nameLocation": "1889:35:0", "nodeType": "EventDefinition", "parameters": {"id": 362, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 361, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "1933:5:0", "nodeType": "VariableDeclaration", "scope": 363, "src": "1925:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 360, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1924:15:0"}, "src": "1883:57:0"}, {"anonymous": false, "documentation": {"id": 364, "nodeType": "StructuredDocumentation", "src": "1946:130:0", "text": " @dev Emitted when the network fee is updated.\n @param oldFee The old fee\n @param newFee The new fee"}, "eventSelector": "8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc", "id": 370, "name": "NetworkFeeUpdated", "nameLocation": "2087:17:0", "nodeType": "EventDefinition", "parameters": {"id": 369, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 366, "indexed": false, "mutability": "mutable", "name": "oldFee", "nameLocation": "2113:6:0", "nodeType": "VariableDeclaration", "scope": 370, "src": "2105:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 365, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2105:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 368, "indexed": false, "mutability": "mutable", "name": "newFee", "nameLocation": "2129:6:0", "nodeType": "VariableDeclaration", "scope": 370, "src": "2121:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2121:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2104:32:0"}, "src": "2081:56:0"}, {"anonymous": false, "documentation": {"id": 371, "nodeType": "StructuredDocumentation", "src": "2143:164:0", "text": " @dev Emitted when transfer fees are withdrawn.\n @param value The amount of tokens withdrawn.\n @param recipient The recipient address."}, "eventSelector": "370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5", "id": 377, "name": "NetworkEarningsWithdrawn", "nameLocation": "2318:24:0", "nodeType": "EventDefinition", "parameters": {"id": 376, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 373, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "2351:5:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2343:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 372, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2343:7:0", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}, {"constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "recipient", "nameLocation": "2366:9:0", "nodeType": "VariableDeclaration", "scope": 377, "src": "2358:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 374, "name": "address", "nodeType": "ElementaryTypeName", "src": "2358:7:0", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "2342:34:0"}, "src": "2312:65:0"}, {"anonymous": false, "eventSelector": "38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783", "id": 381, "name": "OperatorMaximumFeeUpdated", "nameLocation": "2389:25:0", "nodeType": "EventDefinition", "parameters": {"id": 380, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 379, "indexed": false, "mutability": "mutable", "name": "maxFee", "nameLocation": "2422:6:0", "nodeType": "VariableDeclaration", "scope": 381, "src": "2415:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 378, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2415:6:0", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2414:15:0"}, "src": "2383:47:0"}], "scope": 383, "src": "103:2329:0", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:2388:0"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol": {"AST": {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "exportedSymbols": {"ISSVNetworkCore": [864]}, "id": 865, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 750, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:1"}, {"abstract": false, "baseContracts": [], "canonicalName": "ISSVNetworkCore", "contractDependencies": [], "contractKind": "interface", "fullyImplemented": true, "id": 864, "linearizedBaseContracts": [864], "name": "ISSVNetworkCore", "nameLocation": "80:15:1", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "ISSVNetworkCore.Snapshot", "id": 760, "members": [{"constant": false, "id": 753, "mutability": "mutable", "name": "block", "nameLocation": "343:5:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "336:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 752, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "336:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 756, "mutability": "mutable", "name": "index", "nameLocation": "461:5:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "454:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 755, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "454:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 759, "mutability": "mutable", "name": "balance", "nameLocation": "594:7:1", "nodeType": "VariableDeclaration", "scope": 760, "src": "587:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 758, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "587:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "Snapshot", "nameLocation": "255:8:1", "nodeType": "StructDefinition", "scope": 864, "src": "248:360:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Operator", "id": 777, "members": [{"constant": false, "id": 763, "mutability": "mutable", "name": "validatorCount", "nameLocation": "762:14:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "755:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 762, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "755:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 766, "mutability": "mutable", "name": "fee", "nameLocation": "910:3:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "903:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 765, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "903:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 769, "mutability": "mutable", "name": "owner", "nameLocation": "984:5:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "976:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 768, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:1", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 772, "mutability": "mutable", "name": "whitelisted", "nameLocation": "1056:11:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "1051:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 771, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1051:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 776, "mutability": "mutable", "name": "snapshot", "nameLocation": "1138:8:1", "nodeType": "VariableDeclaration", "scope": 777, "src": "1129:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$760_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}, "typeName": {"id": 775, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 774, "name": "Snapshot", "nameLocations": ["1129:8:1"], "nodeType": "IdentifierPath", "referencedDeclaration": 760, "src": "1129:8:1"}, "referencedDeclaration": 760, "src": "1129:8:1", "typeDescriptions": {"typeIdentifier": "t_struct$_Snapshot_$760_storage_ptr", "typeString": "struct ISSVNetworkCore.Snapshot"}}, "visibility": "internal"}], "name": "Operator", "nameLocation": "664:8:1", "nodeType": "StructDefinition", "scope": 864, "src": "657:496:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.OperatorFeeChangeRequest", "id": 787, "members": [{"constant": false, "id": 780, "mutability": "mutable", "name": "fee", "nameLocation": "1327:3:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1320:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 779, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1320:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 783, "mutability": "mutable", "name": "approvalBeginTime", "nameLocation": "1424:17:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1417:24:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 782, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1417:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 786, "mutability": "mutable", "name": "approvalEndTime", "nameLocation": "1533:15:1", "nodeType": "VariableDeclaration", "scope": 787, "src": "1526:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 785, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1526:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "OperatorFeeChangeRequest", "nameLocation": "1231:24:1", "nodeType": "StructDefinition", "scope": 864, "src": "1224:331:1", "visibility": "public"}, {"canonicalName": "ISSVNetworkCore.Cluster", "id": 803, "members": [{"constant": false, "id": 790, "mutability": "mutable", "name": "validatorCount", "nameLocation": "1701:14:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1694:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 789, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1694:6:1", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 793, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "1799:15:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1792:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 792, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1792:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 796, "mutability": "mutable", "name": "index", "nameLocation": "1890:5:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1883:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 795, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1883:6:1", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 799, "mutability": "mutable", "name": "active", "nameLocation": "1973:6:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "1968:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 798, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1968:4:1", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 802, "mutability": "mutable", "name": "balance", "nameLocation": "2041:7:1", "nodeType": "VariableDeclaration", "scope": 803, "src": "2033:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 801, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2033:7:1", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Cluster", "nameLocation": "1619:7:1", "nodeType": "StructDefinition", "scope": 864, "src": "1612:443:1", "visibility": "public"}, {"errorSelector": "5cd83192", "id": 805, "name": "CallerNotOwner", "nameLocation": "2119:14:1", "nodeType": "ErrorDefinition", "parameters": {"id": 804, "nodeType": "ParameterList", "parameters": [], "src": "2133:2:1"}, "src": "2113:23:1"}, {"errorSelector": "8c6e5d71", "id": 807, "name": "CallerNotWhitelisted", "nameLocation": "2161:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 806, "nodeType": "ParameterList", "parameters": [], "src": "2181:2:1"}, "src": "2155:29:1"}, {"errorSelector": "732f9413", "id": 809, "name": "FeeTooLow", "nameLocation": "2209:9:1", "nodeType": "ErrorDefinition", "parameters": {"id": 808, "nodeType": "ParameterList", "parameters": [], "src": "2218:2:1"}, "src": "2203:18:1"}, {"errorSelector": "958065d9", "id": 811, "name": "FeeExceedsIncreaseLimit", "nameLocation": "2246:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 810, "nodeType": "ParameterList", "parameters": [], "src": "2269:2:1"}, "src": "2240:32:1"}, {"errorSelector": "1d226c30", "id": 813, "name": "NoFeeDeclared", "nameLocation": "2297:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 812, "nodeType": "ParameterList", "parameters": [], "src": "2310:2:1"}, "src": "2291:22:1"}, {"errorSelector": "97e4b518", "id": 815, "name": "ApprovalNotWithinTimeframe", "nameLocation": "2338:26:1", "nodeType": "ErrorDefinition", "parameters": {"id": 814, "nodeType": "ParameterList", "parameters": [], "src": "2364:2:1"}, "src": "2332:35:1"}, {"errorSelector": "961e3e8c", "id": 817, "name": "OperatorDoesNotExist", "nameLocation": "2392:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 816, "nodeType": "ParameterList", "parameters": [], "src": "2412:2:1"}, "src": "2386:29:1"}, {"errorSelector": "f4d678b8", "id": 819, "name": "InsufficientBalance", "nameLocation": "2440:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 818, "nodeType": "ParameterList", "parameters": [], "src": "2459:2:1"}, "src": "2434:28:1"}, {"errorSelector": "8d09a73e", "id": 821, "name": "ValidatorAlreadyExists", "nameLocation": "2487:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 820, "nodeType": "ParameterList", "parameters": [], "src": "2509:2:1"}, "src": "2481:31:1"}, {"errorSelector": "e51315d2", "id": 823, "name": "ValidatorDoesNotExist", "nameLocation": "2537:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 822, "nodeType": "ParameterList", "parameters": [], "src": "2558:2:1"}, "src": "2531:30:1"}, {"errorSelector": "2feda3c1", "id": 825, "name": "IncorrectValidatorState", "nameLocation": "2586:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 824, "nodeType": "ParameterList", "parameters": [], "src": "2609:2:1"}, "src": "2580:32:1"}, {"errorSelector": "60300a8d", "id": 827, "name": "ClusterNotLiquidatable", "nameLocation": "2637:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 826, "nodeType": "ParameterList", "parameters": [], "src": "2659:2:1"}, "src": "2631:31:1"}, {"errorSelector": "637297a4", "id": 829, "name": "InvalidPublicKeyLength", "nameLocation": "2687:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 828, "nodeType": "ParameterList", "parameters": [], "src": "2709:2:1"}, "src": "2681:31:1"}, {"errorSelector": "38186224", "id": 831, "name": "InvalidOperatorIdsLength", "nameLocation": "2737:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 830, "nodeType": "ParameterList", "parameters": [], "src": "2761:2:1"}, "src": "2731:33:1"}, {"errorSelector": "3babafd2", "id": 833, "name": "ClusterAlreadyEnabled", "nameLocation": "2789:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 832, "nodeType": "ParameterList", "parameters": [], "src": "2810:2:1"}, "src": "2783:30:1"}, {"errorSelector": "95a0cf33", "id": 835, "name": "ClusterIsLiquidated", "nameLocation": "2838:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 834, "nodeType": "ParameterList", "parameters": [], "src": "2857:2:1"}, "src": "2832:28:1"}, {"errorSelector": "185e2b16", "id": 837, "name": "ClusterDoesNotExists", "nameLocation": "2885:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 836, "nodeType": "ParameterList", "parameters": [], "src": "2905:2:1"}, "src": "2879:29:1"}, {"errorSelector": "12e04c87", "id": 839, "name": "IncorrectClusterState", "nameLocation": "2933:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 838, "nodeType": "ParameterList", "parameters": [], "src": "2954:2:1"}, "src": "2927:30:1"}, {"errorSelector": "dd020e25", "id": 841, "name": "UnsortedOperatorsList", "nameLocation": "2982:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 840, "nodeType": "ParameterList", "parameters": [], "src": "3003:2:1"}, "src": "2976:30:1"}, {"errorSelector": "6e6c9cac", "id": 843, "name": "NewBlockPeriodIsBelowMinimum", "nameLocation": "3031:28:1", "nodeType": "ErrorDefinition", "parameters": {"id": 842, "nodeType": "ParameterList", "parameters": [], "src": "3059:2:1"}, "src": "3025:37:1"}, {"errorSelector": "6df5ab76", "id": 845, "name": "ExceedValidatorLimit", "nameLocation": "3087:20:1", "nodeType": "ErrorDefinition", "parameters": {"id": 844, "nodeType": "ParameterList", "parameters": [], "src": "3107:2:1"}, "src": "3081:29:1"}, {"errorSelector": "045c4b02", "id": 847, "name": "TokenTransferFailed", "nameLocation": "3135:19:1", "nodeType": "ErrorDefinition", "parameters": {"id": 846, "nodeType": "ParameterList", "parameters": [], "src": "3154:2:1"}, "src": "3129:28:1"}, {"errorSelector": "c81272f8", "id": 849, "name": "SameFeeChangeNotAllowed", "nameLocation": "3182:23:1", "nodeType": "ErrorDefinition", "parameters": {"id": 848, "nodeType": "ParameterList", "parameters": [], "src": "3205:2:1"}, "src": "3176:32:1"}, {"errorSelector": "410a2b6c", "id": 851, "name": "FeeIncreaseNotAllowed", "nameLocation": "3233:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 850, "nodeType": "ParameterList", "parameters": [], "src": "3254:2:1"}, "src": "3227:30:1"}, {"errorSelector": "ea8e4eb5", "id": 853, "name": "NotAuthorized", "nameLocation": "3282:13:1", "nodeType": "ErrorDefinition", "parameters": {"id": 852, "nodeType": "ParameterList", "parameters": [], "src": "3295:2:1"}, "src": "3276:22:1"}, {"errorSelector": "a5a1ff5d", "id": 855, "name": "OperatorsListNotUnique", "nameLocation": "3323:22:1", "nodeType": "ErrorDefinition", "parameters": {"id": 854, "nodeType": "ParameterList", "parameters": [], "src": "3345:2:1"}, "src": "3317:31:1"}, {"errorSelector": "289c9494", "id": 857, "name": "OperatorAlreadyExists", "nameLocation": "3373:21:1", "nodeType": "ErrorDefinition", "parameters": {"id": 856, "nodeType": "ParameterList", "parameters": [], "src": "3394:2:1"}, "src": "3367:30:1"}, {"errorSelector": "8f9195fb", "id": 859, "name": "TargetModuleDoesNotExist", "nameLocation": "3422:24:1", "nodeType": "ErrorDefinition", "parameters": {"id": 858, "nodeType": "ParameterList", "parameters": [], "src": "3446:2:1"}, "src": "3416:33:1"}, {"errorSelector": "91aa3017", "id": 861, "name": "MaxValueExceeded", "nameLocation": "3474:16:1", "nodeType": "ErrorDefinition", "parameters": {"id": 860, "nodeType": "ParameterList", "parameters": [], "src": "3490:2:1"}, "src": "3468:25:1"}, {"errorSelector": "cd4e6167", "id": 863, "name": "FeeTooHigh", "nameLocation": "3518:10:1", "nodeType": "ErrorDefinition", "parameters": {"id": 862, "nodeType": "ParameterList", "parameters": [], "src": "3528:2:1"}, "src": "3512:19:1"}], "scope": 865, "src": "70:3477:1", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:3503:1"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol": {"AST": {"absolutePath": "contracts/libraries/CoreLib.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "IERC20": [1087], "ISSVNetworkCore": [864], "SSVModules": [874], "SSVStorage": [944], "StorageData": [921]}, "id": 514, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 384, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:2"}, {"absolutePath": "contracts/libraries/SSVStorage.sol", "file": "./SSVStorage.sol", "id": 385, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 514, "sourceUnit": 945, "src": "70:26:2", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "CoreLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 513, "linearizedBaseContracts": [513], "name": "CoreLib", "nameLocation": "106:7:2", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "eventSelector": "fdf54bf052398eb41c923eb1bd596351c5e72b99959d1ca529a7f13c0a2503d7", "id": 392, "name": "ModuleUpgraded", "nameLocation": "126:14:2", "nodeType": "EventDefinition", "parameters": {"id": 391, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 388, "indexed": true, "mutability": "mutable", "name": "moduleId", "nameLocation": "160:8:2", "nodeType": "VariableDeclaration", "scope": 392, "src": "141:27:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, "typeName": {"id": 387, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 386, "name": "SSVModules", "nameLocations": ["141:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "141:10:2"}, "referencedDeclaration": 874, "src": "141:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 390, "indexed": false, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "178:13:2", "nodeType": "VariableDeclaration", "scope": 392, "src": "170:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 389, "name": "address", "nodeType": "ElementaryTypeName", "src": "170:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "140:52:2"}, "src": "120:73:2"}, {"body": {"id": 399, "nodeType": "Block", "src": "259:36:2", "statements": [{"expression": {"hexValue": "76312e302e302e726333", "id": 397, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "276:12:2", "typeDescriptions": {"typeIdentifier": "t_stringliteral_fe6b798f1872efaf95fb369d59face8b11b42cd5fba72c760a2c2ca0e3476cae", "typeString": "literal_string \"v1.0.0.rc3\""}, "value": "v1.0.0.rc3"}, "functionReturnParameters": 396, "id": 398, "nodeType": "Return", "src": "269:19:2"}]}, "id": 400, "implemented": true, "kind": "function", "modifiers": [], "name": "getVersion", "nameLocation": "208:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 393, "nodeType": "ParameterList", "parameters": [], "src": "218:2:2"}, "returnParameters": {"id": 396, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 395, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 400, "src": "244:13:2", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": {"typeIdentifier": "t_string_memory_ptr", "typeString": "string"}, "typeName": {"id": 394, "name": "string", "nodeType": "ElementaryTypeName", "src": "244:6:2", "typeDescriptions": {"typeIdentifier": "t_string_storage_ptr", "typeString": "string"}}, "visibility": "internal"}], "src": "243:15:2"}, "scope": 513, "src": "199:96:2", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 423, "nodeType": "Block", "src": "363:136:2", "statements": [{"condition": {"id": 415, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "377:45:2", "subExpression": {"arguments": [{"id": 412, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 402, "src": "411:2:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 413, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 404, "src": "415:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 407, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "378:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 408, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "389:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "378:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 410, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "396:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 916, "src": "378:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "id": 411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "402:8:2", "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 1054, "src": "378:32:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)"}}, "id": 414, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "378:44:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 422, "nodeType": "IfStatement", "src": "373:120:2", "trueBody": {"id": 421, "nodeType": "Block", "src": "424:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 416, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "445:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 418, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "461:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 847, "src": "445:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 419, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "445:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 420, "nodeType": "RevertStatement", "src": "438:44:2"}]}}]}, "id": 424, "implemented": true, "kind": "function", "modifiers": [], "name": "transferBalance", "nameLocation": "310:15:2", "nodeType": "FunctionDefinition", "parameters": {"id": 405, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 402, "mutability": "mutable", "name": "to", "nameLocation": "334:2:2", "nodeType": "VariableDeclaration", "scope": 424, "src": "326:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 401, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 404, "mutability": "mutable", "name": "amount", "nameLocation": "346:6:2", "nodeType": "VariableDeclaration", "scope": 424, "src": "338:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 403, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "338:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "325:28:2"}, "returnParameters": {"id": 406, "nodeType": "ParameterList", "parameters": [], "src": "363:0:2"}, "scope": 513, "src": "301:198:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 450, "nodeType": "Block", "src": "547:163:2", "statements": [{"condition": {"id": 442, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "561:72:2", "subExpression": {"arguments": [{"expression": {"id": 434, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "599:3:2", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "603:6:2", "memberName": "sender", "nodeType": "MemberAccess", "src": "599:10:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"arguments": [{"id": 438, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "619:4:2", "typeDescriptions": {"typeIdentifier": "t_contract$_CoreLib_$513", "typeString": "library CoreLib"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_contract$_CoreLib_$513", "typeString": "library CoreLib"}], "id": 437, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "611:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 436, "name": "address", "nodeType": "ElementaryTypeName", "src": "611:7:2", "typeDescriptions": {}}}, "id": 439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "611:13:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 440, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 426, "src": "626:6:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 429, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "562:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "573:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "562:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 431, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 432, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "580:5:2", "memberName": "token", "nodeType": "MemberAccess", "referencedDeclaration": 916, "src": "562:23:2", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "id": 433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "586:12:2", "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 1086, "src": "562:36:2", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)"}}, "id": 441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "562:71:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 449, "nodeType": "IfStatement", "src": "557:147:2", "trueBody": {"id": 448, "nodeType": "Block", "src": "635:69:2", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 443, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "656:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "672:19:2", "memberName": "TokenTransferFailed", "nodeType": "MemberAccess", "referencedDeclaration": 847, "src": "656:35:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "656:37:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 447, "nodeType": "RevertStatement", "src": "649:44:2"}]}}]}, "id": 451, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nameLocation": "514:7:2", "nodeType": "FunctionDefinition", "parameters": {"id": 427, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 426, "mutability": "mutable", "name": "amount", "nameLocation": "530:6:2", "nodeType": "VariableDeclaration", "scope": 451, "src": "522:14:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 425, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "522:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "521:16:2"}, "returnParameters": {"id": 428, "nodeType": "ParameterList", "parameters": [], "src": "547:0:2"}, "scope": 513, "src": "505:205:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 477, "nodeType": "Block", "src": "1352:440:2", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_address", "typeString": "address"}, "id": 464, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 459, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 454, "src": "1366:7:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"arguments": [{"hexValue": "30", "id": 462, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:2", "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": 461, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1377:7:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)"}, "typeName": {"id": 460, "name": "address", "nodeType": "ElementaryTypeName", "src": "1377:7:2", "typeDescriptions": {}}}, "id": 463, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1377:10:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1366:21:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 468, "nodeType": "IfStatement", "src": "1362:64:2", "trueBody": {"id": 467, "nodeType": "Block", "src": "1389:37:2", "statements": [{"expression": {"hexValue": "66616c7365", "id": 465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1410:5:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "value": "false"}, "functionReturnParameters": 458, "id": 466, "nodeType": "Return", "src": "1403:12:2"}]}}, {"assignments": [470], "declarations": [{"constant": false, "id": 470, "mutability": "mutable", "name": "size", "nameLocation": "1630:4:2", "nodeType": "VariableDeclaration", "scope": 477, "src": "1622:12:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 469, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1622:7:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 471, "nodeType": "VariableDeclarationStatement", "src": "1622:12:2"}, {"AST": {"nodeType": "YulBlock", "src": "1709:52:2", "statements": [{"nodeType": "YulAssignment", "src": "1723:28:2", "value": {"arguments": [{"name": "account", "nodeType": "YulIdentifier", "src": "1743:7:2"}], "functionName": {"name": "extcodesize", "nodeType": "YulIdentifier", "src": "1731:11:2"}, "nodeType": "YulFunctionCall", "src": "1731:20:2"}, "variableNames": [{"name": "size", "nodeType": "YulIdentifier", "src": "1723:4:2"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 454, "isOffset": false, "isSlot": false, "src": "1743:7:2", "valueSize": 1}, {"declaration": 470, "isOffset": false, "isSlot": false, "src": "1723:4:2", "valueSize": 1}], "id": 472, "nodeType": "InlineAssembly", "src": "1700:61:2"}, {"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 473, "name": "size", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 470, "src": "1777:4:2", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1784:1:2", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1777:8:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "functionReturnParameters": 458, "id": 476, "nodeType": "Return", "src": "1770:15:2"}]}, "documentation": {"id": 452, "nodeType": "StructuredDocumentation", "src": "716:565:2", "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="}, "id": 478, "implemented": true, "kind": "function", "modifiers": [], "name": "isContract", "nameLocation": "1295:10:2", "nodeType": "FunctionDefinition", "parameters": {"id": 455, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 454, "mutability": "mutable", "name": "account", "nameLocation": "1314:7:2", "nodeType": "VariableDeclaration", "scope": 478, "src": "1306:15:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 453, "name": "address", "nodeType": "ElementaryTypeName", "src": "1306:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1305:17:2"}, "returnParameters": {"id": 458, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 457, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 478, "src": "1346:4:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 456, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1346:4:2", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1345:6:2"}, "scope": 513, "src": "1286:506:2", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 511, "nodeType": "Block", "src": "1879:219:2", "statements": [{"condition": {"id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1893:26:2", "subExpression": {"arguments": [{"id": 487, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "1905:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}], "id": 486, "name": "isContract", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "1894:10:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)"}}, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1894:25:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 495, "nodeType": "IfStatement", "src": "1889:81:2", "trueBody": {"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 490, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "1928:15:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1944:24:2", "memberName": "TargetModuleDoesNotExist", "nodeType": "MemberAccess", "referencedDeclaration": 859, "src": "1928:40:2", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1928:42:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 494, "nodeType": "RevertStatement", "src": "1921:49:2"}}, {"expression": {"id": 504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"baseExpression": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 496, "name": "SSVStorage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 944, "src": "1981:10:2", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorage_$944_$", "typeString": "type(library SSVStorage)"}}, "id": 498, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1992:4:2", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 943, "src": "1981:15:2", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageData_$921_storage_ptr_$", "typeString": "function () pure returns (struct StorageData storage pointer)"}}, "id": 499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1981:17:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData storage pointer"}}, "id": 500, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1999:12:2", "memberName": "ssvContracts", "nodeType": "MemberAccess", "referencedDeclaration": 895, "src": "1981:30:2", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}}, "id": 502, "indexExpression": {"id": 501, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "2012:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1981:40:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 503, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "2024:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "src": "1981:56:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "id": 505, "nodeType": "ExpressionStatement", "src": "1981:56:2"}, {"eventCall": {"arguments": [{"id": 507, "name": "moduleId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 481, "src": "2067:8:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, {"id": 508, "name": "moduleAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 483, "src": "2077:13:2", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 506, "name": "ModuleUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 392, "src": "2052:14:2", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_enum$_SSVModules_$874_$_t_address_$returns$__$", "typeString": "function (enum SSVModules,address)"}}, "id": 509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2052:39:2", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 510, "nodeType": "EmitStatement", "src": "2047:44:2"}]}, "id": 512, "implemented": true, "kind": "function", "modifiers": [], "name": "setModuleContract", "nameLocation": "1808:17:2", "nodeType": "FunctionDefinition", "parameters": {"id": 484, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 481, "mutability": "mutable", "name": "moduleId", "nameLocation": "1837:8:2", "nodeType": "VariableDeclaration", "scope": 512, "src": "1826:19:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}, "typeName": {"id": 480, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 479, "name": "SSVModules", "nameLocations": ["1826:10:2"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "1826:10:2"}, "referencedDeclaration": 874, "src": "1826:10:2", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "visibility": "internal"}, {"constant": false, "id": 483, "mutability": "mutable", "name": "moduleAddress", "nameLocation": "1855:13:2", "nodeType": "VariableDeclaration", "scope": 512, "src": "1847:21:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 482, "name": "address", "nodeType": "ElementaryTypeName", "src": "1847:7:2", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1825:44:2"}, "returnParameters": {"id": 485, "nodeType": "ParameterList", "parameters": [], "src": "1879:0:2"}, "scope": 513, "src": "1799:299:2", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 514, "src": "98:2002:2", "usedErrors": []}], "src": "45:2056:2"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol": {"AST": {"absolutePath": "contracts/libraries/ProtocolLib.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [686], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVStorageProtocol": [1009], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 682, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 515, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:3"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 516, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 865, "src": "70:43:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "./Types.sol", "id": 517, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 749, "src": "114:21:3", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "file": "./SSVStorageProtocol.sol", "id": 518, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 682, "sourceUnit": 1010, "src": "136:34:3", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [], "canonicalName": "ProtocolLib", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 681, "linearizedBaseContracts": [681], "name": "ProtocolLib", "nameLocation": "180:11:3", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 521, "libraryName": {"id": 519, "name": "Types256", "nameLocations": ["204:8:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 748, "src": "204:8:3"}, "nodeType": "UsingForDirective", "src": "198:27:3", "typeName": {"id": 520, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "217:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"body": {"id": 544, "nodeType": "Block", "src": "433:113:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 529, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "450:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 530, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "453:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 964, "src": "450:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 537, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 533, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "478:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "484:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "478:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 535, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "493:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 536, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "496:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "493:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "478:44:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 532, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "471:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 531, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "471:6:3", "typeDescriptions": {}}}, "id": 538, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "471:52:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 539, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 524, "src": "526:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 540, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "529:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "526:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "471:68:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "450:89:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 528, "id": 543, "nodeType": "Return", "src": "443:96:3"}]}, "id": 545, "implemented": true, "kind": "function", "modifiers": [], "name": "currentNetworkFeeIndex", "nameLocation": "351:22:3", "nodeType": "FunctionDefinition", "parameters": {"id": 525, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 524, "mutability": "mutable", "name": "sp", "nameLocation": "398:2:3", "nodeType": "VariableDeclaration", "scope": 545, "src": "374:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 523, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 522, "name": "StorageProtocol", "nameLocations": ["374:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "374:15:3"}, "referencedDeclaration": 986, "src": "374:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "373:28:3"}, "returnParameters": {"id": 528, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 527, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 545, "src": "425:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 526, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "425:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "424:8:3"}, "scope": 681, "src": "342:204:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 583, "nodeType": "Block", "src": "628:196:3", "statements": [{"expression": {"arguments": [{"id": 554, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "656:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 553, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "638:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "638:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 556, "nodeType": "ExpressionStatement", "src": "638:21:3"}, {"expression": {"id": 563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 557, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "670:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 559, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "673:15:3", "memberName": "networkFeeIndex", "nodeType": "MemberAccess", "referencedDeclaration": 964, "src": "670:18:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 561, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "714:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 560, "name": "currentNetworkFeeIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 545, "src": "691:22:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "691:26:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "670:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 564, "nodeType": "ExpressionStatement", "src": "670:47:3"}, {"expression": {"id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 565, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "727:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 567, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "730:26:3", "memberName": "networkFeeIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 949, "src": "727:29:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 570, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "766:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "772:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "766:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 569, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "759:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 568, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "759:6:3", "typeDescriptions": {}}}, "id": 572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "759:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "727:52:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 574, "nodeType": "ExpressionStatement", "src": "727:52:3"}, {"expression": {"id": 581, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 575, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 548, "src": "789:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 577, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "792:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "789:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 578, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 550, "src": "805:3:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 579, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "809:6:3", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "805:10:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "805:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "789:28:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 582, "nodeType": "ExpressionStatement", "src": "789:28:3"}]}, "id": 584, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "561:16:3", "nodeType": "FunctionDefinition", "parameters": {"id": 551, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 548, "mutability": "mutable", "name": "sp", "nameLocation": "602:2:3", "nodeType": "VariableDeclaration", "scope": 584, "src": "578:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 547, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 546, "name": "StorageProtocol", "nameLocations": ["578:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "578:15:3"}, "referencedDeclaration": 986, "src": "578:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 550, "mutability": "mutable", "name": "fee", "nameLocation": "614:3:3", "nodeType": "VariableDeclaration", "scope": 584, "src": "606:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 549, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "606:7:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "577:41:3"}, "returnParameters": {"id": 552, "nodeType": "ParameterList", "parameters": [], "src": "628:0:3"}, "scope": 681, "src": "552:272:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 608, "nodeType": "Block", "src": "993:112:3", "statements": [{"expression": {"id": 596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 590, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1003:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 592, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1006:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1003:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"id": 594, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1040:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 593, "name": "networkTotalEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 637, "src": "1019:20:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:24:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1003:40:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 597, "nodeType": "ExpressionStatement", "src": "1003:40:3"}, {"expression": {"id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 598, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "1053:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 600, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1056:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 955, "src": "1053:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [{"expression": {"id": 603, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1085:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1091:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1085:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 602, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1078:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 601, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1078:6:3", "typeDescriptions": {}}}, "id": 605, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1078:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1053:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 607, "nodeType": "ExpressionStatement", "src": "1053:45:3"}]}, "id": 609, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAOEarnings", "nameLocation": "938:17:3", "nodeType": "FunctionDefinition", "parameters": {"id": 588, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 587, "mutability": "mutable", "name": "sp", "nameLocation": "980:2:3", "nodeType": "VariableDeclaration", "scope": 609, "src": "956:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 586, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 585, "name": "StorageProtocol", "nameLocations": ["956:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "956:15:3"}, "referencedDeclaration": 986, "src": "956:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "955:28:3"}, "returnParameters": {"id": 589, "nodeType": "ParameterList", "parameters": [], "src": "993:0:3"}, "scope": 681, "src": "929:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 636, "nodeType": "Block", "src": "1200:126:3", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 617, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1217:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 618, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1220:10:3", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1217:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 633, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"expression": {"id": 621, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "1241:5:3", "typeDescriptions": {"typeIdentifier": "t_magic_block", "typeString": "block"}}, "id": 622, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1247:6:3", "memberName": "number", "nodeType": "MemberAccess", "src": "1241:12:3", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 620, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1234:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 619, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1234:6:3", "typeDescriptions": {}}}, "id": 623, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1234:20:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"expression": {"id": 624, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1257:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 625, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1260:19:3", "memberName": "daoIndexBlockNumber", "nodeType": "MemberAccess", "referencedDeclaration": 955, "src": "1257:22:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1234:45:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "id": 627, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1233:47:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 628, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1283:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 629, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1286:10:3", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "1283:13:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1233:63:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"expression": {"id": 631, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 612, "src": "1299:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 632, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1302:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1299:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1233:86:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1217:102:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 616, "id": 635, "nodeType": "Return", "src": "1210:109:3"}]}, "id": 637, "implemented": true, "kind": "function", "modifiers": [], "name": "networkTotalEarnings", "nameLocation": "1120:20:3", "nodeType": "FunctionDefinition", "parameters": {"id": 613, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 612, "mutability": "mutable", "name": "sp", "nameLocation": "1165:2:3", "nodeType": "VariableDeclaration", "scope": 637, "src": "1141:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 611, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 610, "name": "StorageProtocol", "nameLocations": ["1141:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1141:15:3"}, "referencedDeclaration": 986, "src": "1141:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1140:28:3"}, "returnParameters": {"id": 616, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 615, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 637, "src": "1192:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 614, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1192:6:3", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1191:8:3"}, "scope": 681, "src": "1111:215:3", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 679, "nodeType": "Block", "src": "1445:286:3", "statements": [{"expression": {"arguments": [{"id": 648, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1473:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}], "id": 647, "name": "updateDAOEarnings", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "1455:17:3", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$__$", "typeString": "function (struct StorageProtocol storage pointer)"}}, "id": 649, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1455:21:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 650, "nodeType": "ExpressionStatement", "src": "1455:21:3"}, {"condition": {"id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1490:23:3", "subExpression": {"id": 651, "name": "increaseValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 642, "src": "1491:22:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "falseBody": {"condition": {"commonType": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "id": 670, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"components": [{"id": 663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 660, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1594:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 661, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1597:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1594:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"id": 662, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "1618:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1594:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}], "id": 664, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "1593:45:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"expression": {"arguments": [{"id": 667, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1646:6:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}, "typeName": {"id": 666, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1646:6:3", "typeDescriptions": {}}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)"}], "id": 665, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1641:4:3", "typeDescriptions": {"typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 668, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1641:12:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_magic_meta_type_t_uint32", "typeString": "type(uint32)"}}, "id": 669, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1654:3:3", "memberName": "max", "nodeType": "MemberAccess", "src": "1641:16:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1593:64:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 677, "nodeType": "IfStatement", "src": "1589:136:3", "trueBody": {"id": 676, "nodeType": "Block", "src": "1659:66:3", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 671, "name": "ISSVNetworkCore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 864, "src": "1680:15:3", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_ISSVNetworkCore_$864_$", "typeString": "type(contract ISSVNetworkCore)"}}, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1696:16:3", "memberName": "MaxValueExceeded", "nodeType": "MemberAccess", "referencedDeclaration": 861, "src": "1680:32:3", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 674, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1680:34:3", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 675, "nodeType": "RevertStatement", "src": "1673:41:3"}]}}, "id": 678, "nodeType": "IfStatement", "src": "1486:239:3", "trueBody": {"id": 659, "nodeType": "Block", "src": "1515:68:3", "statements": [{"expression": {"id": 657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 653, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 640, "src": "1529:2:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 655, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1532:17:3", "memberName": "daoValidatorCount", "nodeType": "MemberAccess", "referencedDeclaration": 952, "src": "1529:20:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "nodeType": "Assignment", "operator": "-=", "rightHandSide": {"id": 656, "name": "deltaValidatorCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 644, "src": "1553:19:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "src": "1529:43:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "id": 658, "nodeType": "ExpressionStatement", "src": "1529:43:3"}]}}]}, "id": 680, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDAO", "nameLocation": "1341:9:3", "nodeType": "FunctionDefinition", "parameters": {"id": 645, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 640, "mutability": "mutable", "name": "sp", "nameLocation": "1375:2:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1351:26:3", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 639, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 638, "name": "StorageProtocol", "nameLocations": ["1351:15:3"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1351:15:3"}, "referencedDeclaration": 986, "src": "1351:15:3", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}, {"constant": false, "id": 642, "mutability": "mutable", "name": "increaseValidatorCount", "nameLocation": "1384:22:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1379:27:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 641, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1379:4:3", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}, {"constant": false, "id": 644, "mutability": "mutable", "name": "deltaValidatorCount", "nameLocation": "1415:19:3", "nodeType": "VariableDeclaration", "scope": 680, "src": "1408:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 643, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1408:6:3", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}], "src": "1350:85:3"}, "returnParameters": {"id": 646, "nodeType": "ParameterList", "parameters": [], "src": "1445:0:3"}, "scope": 681, "src": "1332:399:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 682, "src": "172:1561:3", "usedErrors": []}], "src": "45:1689:3"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorage.sol", "exportedSymbols": {"Counters": [1161], "IERC20": [1087], "ISSVNetworkCore": [864], "SSVModules": [874], "SSVStorage": [944], "StorageData": [921]}, "id": 945, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 866, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:4"}, {"absolutePath": "contracts/interfaces/ISSVNetworkCore.sol", "file": "../interfaces/ISSVNetworkCore.sol", "id": 867, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 865, "src": "70:43:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "file": "@openzeppelin/contracts/utils/Counters.sol", "id": 868, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 1162, "src": "114:52:4", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 869, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 945, "sourceUnit": 1088, "src": "167:56:4", "symbolAliases": [], "unitAlias": ""}, {"canonicalName": "SSVModules", "id": 874, "members": [{"id": 870, "name": "SSV_OPERATORS", "nameLocation": "247:13:4", "nodeType": "EnumValue", "src": "247:13:4"}, {"id": 871, "name": "SSV_CLUSTERS", "nameLocation": "266:12:4", "nodeType": "EnumValue", "src": "266:12:4"}, {"id": 872, "name": "SSV_DAO", "nameLocation": "284:7:4", "nodeType": "EnumValue", "src": "284:7:4"}, {"id": 873, "name": "SSV_VIEWS", "nameLocation": "297:9:4", "nodeType": "EnumValue", "src": "297:9:4"}], "name": "SSVModules", "nameLocation": "230:10:4", "nodeType": "EnumDefinition", "src": "225:83:4"}, {"canonicalName": "StorageData", "id": 921, "members": [{"constant": false, "id": 879, "mutability": "mutable", "name": "validatorPKs", "nameLocation": "627:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "599:40:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 878, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 876, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "607:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "599:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 877, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "618:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 884, "mutability": "mutable", "name": "clusters", "nameLocation": "784:8:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "756:36:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "typeName": {"id": 883, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 881, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "764:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "756:27:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", "typeString": "mapping(bytes32 => bytes32)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 882, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "775:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}}, "visibility": "internal"}, {"constant": false, "id": 889, "mutability": "mutable", "name": "operatorsPKs", "nameLocation": "897:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "870:39:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "typeName": {"id": 888, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 886, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "878:7:4", "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}, "nodeType": "Mapping", "src": "870:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$", "typeString": "mapping(bytes32 => uint64)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 887, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "889:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, "visibility": "internal"}, {"constant": false, "id": 895, "mutability": "mutable", "name": "ssvContracts", "nameLocation": "1029:12:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "998:43:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "typeName": {"id": 894, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 892, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 891, "name": "SSVModules", "nameLocations": ["1006:10:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 874, "src": "1006:10:4"}, "referencedDeclaration": 874, "src": "1006:10:4", "typeDescriptions": {"typeIdentifier": "t_enum$_SSVModules_$874", "typeString": "enum SSVModules"}}, "nodeType": "Mapping", "src": "998:30:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_enum$_SSVModules_$874_$_t_address_$", "typeString": "mapping(enum SSVModules => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 893, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 900, "mutability": "mutable", "name": "operatorsWhitelist", "nameLocation": "1186:18:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1159:45:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "typeName": {"id": 899, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 897, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1167:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1159:26:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_address_$", "typeString": "mapping(uint64 => address)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 898, "name": "address", "nodeType": "ElementaryTypeName", "src": "1177:7:4", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}}, "visibility": "internal"}, {"constant": false, "id": 906, "mutability": "mutable", "name": "operatorFeeChangeRequests", "nameLocation": "1364:25:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1304:85:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$787_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "typeName": {"id": 905, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 902, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1312:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1304:59:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_OperatorFeeChangeRequest_$787_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.OperatorFeeChangeRequest)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 904, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 903, "name": "ISSVNetworkCore.OperatorFeeChangeRequest", "nameLocations": ["1322:15:4", "1338:24:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 787, "src": "1322:40:4"}, "referencedDeclaration": 787, "src": "1322:40:4", "typeDescriptions": {"typeIdentifier": "t_struct$_OperatorFeeChangeRequest_$787_storage_ptr", "typeString": "struct ISSVNetworkCore.OperatorFeeChangeRequest"}}}, "visibility": "internal"}, {"constant": false, "id": 912, "mutability": "mutable", "name": "operators", "nameLocation": "1514:9:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1470:53:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "typeName": {"id": 911, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": {"id": 908, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1478:6:4", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Mapping", "src": "1470:43:4", "typeDescriptions": {"typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_Operator_$777_storage_$", "typeString": "mapping(uint64 => struct ISSVNetworkCore.Operator)"}, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": {"id": 910, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 909, "name": "ISSVNetworkCore.Operator", "nameLocations": ["1488:15:4", "1504:8:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 777, "src": "1488:24:4"}, "referencedDeclaration": 777, "src": "1488:24:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Operator_$777_storage_ptr", "typeString": "struct ISSVNetworkCore.Operator"}}}, "visibility": "internal"}, {"constant": false, "id": 916, "mutability": "mutable", "name": "token", "nameLocation": "1606:5:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1599:12:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}, "typeName": {"id": 915, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 914, "name": "IERC20", "nameLocations": ["1599:6:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1087, "src": "1599:6:4"}, "referencedDeclaration": 1087, "src": "1599:6:4", "typeDescriptions": {"typeIdentifier": "t_contract$_IERC20_$1087", "typeString": "contract IERC20"}}, "visibility": "internal"}, {"constant": false, "id": 920, "mutability": "mutable", "name": "lastOperatorId", "nameLocation": "1703:14:4", "nodeType": "VariableDeclaration", "scope": 921, "src": "1686:31:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 919, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 918, "name": "Counters.Counter", "nameLocations": ["1686:8:4", "1695:7:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1686:16:4"}, "referencedDeclaration": 1093, "src": "1686:16:4", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "name": "StorageData", "nameLocation": "426:11:4", "nodeType": "StructDefinition", "scope": 945, "src": "419:1301:4", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorage", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 944, "linearizedBaseContracts": [944], "name": "SSVStorage", "nameLocation": "1730:10:4", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 931, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1772:20:4", "nodeType": "VariableDeclaration", "scope": 944, "src": "1747:98:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 922, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1747:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 930, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e6d61696e", "id": 926, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1813:26:4", "typeDescriptions": {"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}, "value": "ssv.network.storage.main"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_d56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed105", "typeString": "literal_string \"ssv.network.storage.main\""}], "id": 925, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1803:9:4", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 927, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:37:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 924, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1795:7:4", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 923, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1795:7:4", "typeDescriptions": {}}}, "id": 928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1795:46:4", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 929, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1844:1:4", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1795:50:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 942, "nodeType": "Block", "src": "1915:117:4", "statements": [{"assignments": [938], "declarations": [{"constant": false, "id": 938, "mutability": "mutable", "name": "position", "nameLocation": "1933:8:4", "nodeType": "VariableDeclaration", "scope": 942, "src": "1925:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 937, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1925:7:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 940, "initialValue": {"id": 939, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "1944:20:4", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1925:39:4"}, {"AST": {"nodeType": "YulBlock", "src": "1983:43:4", "statements": [{"nodeType": "YulAssignment", "src": "1997:19:4", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "2008:8:4"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1997:7:4"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 938, "isOffset": false, "isSlot": false, "src": "2008:8:4", "valueSize": 1}, {"declaration": 935, "isOffset": false, "isSlot": true, "src": "1997:7:4", "suffix": "slot", "valueSize": 1}], "id": 941, "nodeType": "InlineAssembly", "src": "1974:52:4"}]}, "id": 943, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1861:4:4", "nodeType": "FunctionDefinition", "parameters": {"id": 932, "nodeType": "ParameterList", "parameters": [], "src": "1865:2:4"}, "returnParameters": {"id": 936, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 935, "mutability": "mutable", "name": "sd", "nameLocation": "1911:2:4", "nodeType": "VariableDeclaration", "scope": 943, "src": "1891:22:4", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData"}, "typeName": {"id": 934, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 933, "name": "StorageData", "nameLocations": ["1891:11:4"], "nodeType": "IdentifierPath", "referencedDeclaration": 921, "src": "1891:11:4"}, "referencedDeclaration": 921, "src": "1891:11:4", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageData_$921_storage_ptr", "typeString": "struct StorageData"}}, "visibility": "internal"}], "src": "1890:24:4"}, "scope": 944, "src": "1852:180:4", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 945, "src": "1722:312:4", "usedErrors": []}], "src": "45:1990:4"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol": {"AST": {"absolutePath": "contracts/libraries/SSVStorageProtocol.sol", "exportedSymbols": {"SSVStorageProtocol": [1009], "StorageProtocol": [986]}, "id": 1010, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 946, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:5"}, {"canonicalName": "StorageProtocol", "id": 986, "members": [{"constant": false, "id": 949, "mutability": "mutable", "name": "networkFeeIndexBlockNumber", "nameLocation": "314:26:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "307:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 948, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "307:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 952, "mutability": "mutable", "name": "daoValidatorCount", "nameLocation": "413:17:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "406:24:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 951, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "406:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 955, "mutability": "mutable", "name": "daoIndexBlockNumber", "nameLocation": "512:19:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "505:26:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 954, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "505:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 958, "mutability": "mutable", "name": "validatorsPerOperatorLimit", "nameLocation": "605:26:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "598:33:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}, "typeName": {"id": 957, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "598:6:5", "typeDescriptions": {"typeIdentifier": "t_uint32", "typeString": "uint32"}}, "visibility": "internal"}, {"constant": false, "id": 961, "mutability": "mutable", "name": "networkFee", "nameLocation": "690:10:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "683:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 960, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "683:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 964, "mutability": "mutable", "name": "networkFeeIndex", "nameLocation": "765:15:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "758:22:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 963, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "758:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 967, "mutability": "mutable", "name": "daoBalance", "nameLocation": "840:10:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "833:17:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 966, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "833:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 970, "mutability": "mutable", "name": "minimumBlocksBeforeLiquidation", "nameLocation": "952:30:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "945:37:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 969, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "945:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 973, "mutability": "mutable", "name": "minimumLiquidationCollateral", "nameLocation": "1059:28:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1052:35:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 972, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1052:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 976, "mutability": "mutable", "name": "declareOperatorFeePeriod", "nameLocation": "1173:24:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1166:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 975, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1166:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 979, "mutability": "mutable", "name": "executeOperatorFeePeriod", "nameLocation": "1285:24:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1278:31:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 978, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1278:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 982, "mutability": "mutable", "name": "operatorMaxFeeIncrease", "nameLocation": "1404:22:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1397:29:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 981, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1397:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}, {"constant": false, "id": 985, "mutability": "mutable", "name": "operatorMaxFee", "nameLocation": "1511:14:5", "nodeType": "VariableDeclaration", "scope": 986, "src": "1504:21:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 984, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1504:6:5", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "name": "StorageProtocol", "nameLocation": "208:15:5", "nodeType": "StructDefinition", "scope": 1010, "src": "201:1327:5", "visibility": "public"}, {"abstract": false, "baseContracts": [], "canonicalName": "SSVStorageProtocol", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 1009, "linearizedBaseContracts": [1009], "name": "SSVStorageProtocol", "nameLocation": "1538:18:5", "nodeType": "ContractDefinition", "nodes": [{"constant": true, "id": 996, "mutability": "constant", "name": "SSV_STORAGE_POSITION", "nameLocation": "1588:20:5", "nodeType": "VariableDeclaration", "scope": 1009, "src": "1563:102:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 987, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1563:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"arguments": [{"arguments": [{"hexValue": "7373762e6e6574776f726b2e73746f726167652e70726f746f636f6c", "id": 991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1629:30:5", "typeDescriptions": {"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}, "value": "ssv.network.storage.protocol"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_stringliteral_0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa16", "typeString": "literal_string \"ssv.network.storage.protocol\""}], "id": 990, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "1619:9:5", "typeDescriptions": {"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)"}}, "id": 992, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1619:41:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_bytes32", "typeString": "bytes32"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bytes32", "typeString": "bytes32"}], "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1611:7:5", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)"}, "typeName": {"id": 988, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1611:7:5", "typeDescriptions": {}}}, "id": 993, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1611:50:5", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1664:1:5", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1611:54:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "private"}, {"body": {"id": 1007, "nodeType": "Block", "src": "1739:117:5", "statements": [{"assignments": [1003], "declarations": [{"constant": false, "id": 1003, "mutability": "mutable", "name": "position", "nameLocation": "1757:8:5", "nodeType": "VariableDeclaration", "scope": 1007, "src": "1749:16:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1002, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1749:7:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1005, "initialValue": {"id": 1004, "name": "SSV_STORAGE_POSITION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 996, "src": "1768:20:5", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1749:39:5"}, {"AST": {"nodeType": "YulBlock", "src": "1807:43:5", "statements": [{"nodeType": "YulAssignment", "src": "1821:19:5", "value": {"name": "position", "nodeType": "YulIdentifier", "src": "1832:8:5"}, "variableNames": [{"name": "sd.slot", "nodeType": "YulIdentifier", "src": "1821:7:5"}]}]}, "evmVersion": "paris", "externalReferences": [{"declaration": 1003, "isOffset": false, "isSlot": false, "src": "1832:8:5", "valueSize": 1}, {"declaration": 1000, "isOffset": false, "isSlot": true, "src": "1821:7:5", "suffix": "slot", "valueSize": 1}], "id": 1006, "nodeType": "InlineAssembly", "src": "1798:52:5"}]}, "id": 1008, "implemented": true, "kind": "function", "modifiers": [], "name": "load", "nameLocation": "1681:4:5", "nodeType": "FunctionDefinition", "parameters": {"id": 997, "nodeType": "ParameterList", "parameters": [], "src": "1685:2:5"}, "returnParameters": {"id": 1001, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1000, "mutability": "mutable", "name": "sd", "nameLocation": "1735:2:5", "nodeType": "VariableDeclaration", "scope": 1008, "src": "1711:26:5", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 999, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 998, "name": "StorageProtocol", "nameLocations": ["1711:15:5"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "1711:15:5"}, "referencedDeclaration": 986, "src": "1711:15:5", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "src": "1710:28:5"}, "scope": 1009, "src": "1672:184:5", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 1010, "src": "1530:328:5", "usedErrors": []}], "src": "45:1814:5"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol": {"AST": {"absolutePath": "contracts/libraries/Types.sol", "exportedSymbols": {"DEDUCTED_DIGITS": [686], "Types256": [748], "Types64": [699]}, "id": 749, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 683, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:6"}, {"constant": true, "id": 686, "mutability": "constant", "name": "DEDUCTED_DIGITS", "nameLocation": "87:15:6", "nodeType": "VariableDeclaration", "scope": 749, "src": "70:45:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 684, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "70:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "value": {"hexValue": "31305f3030305f303030", "id": 685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "105:10:6", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "value": "10_000_000"}, "visibility": "internal"}, {"abstract": false, "baseContracts": [], "canonicalName": "Types64", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 699, "linearizedBaseContracts": [699], "name": "Types64", "nameLocation": "126:7:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 697, "nodeType": "Block", "src": "202:47:6", "statements": [{"expression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 693, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 688, "src": "219:5:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 694, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "227:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "219:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 692, "id": 696, "nodeType": "Return", "src": "212:30:6"}]}, "id": 698, "implemented": true, "kind": "function", "modifiers": [], "name": "expand", "nameLocation": "149:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 689, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 688, "mutability": "mutable", "name": "value", "nameLocation": "163:5:6", "nodeType": "VariableDeclaration", "scope": 698, "src": "156:12:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 687, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "156:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "155:14:6"}, "returnParameters": {"id": 692, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 691, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 698, "src": "193:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "193:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "192:9:6"}, "scope": 699, "src": "140:109:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 749, "src": "118:133:6", "usedErrors": []}, {"abstract": false, "baseContracts": [], "canonicalName": "Types256", "contractDependencies": [], "contractKind": "library", "fullyImplemented": true, "id": 748, "linearizedBaseContracts": [748], "name": "Types256", "nameLocation": "261:8:6", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 727, "nodeType": "Block", "src": "338:144:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 714, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 707, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "356:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": {"components": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 712, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}, "id": 710, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "32", "id": 708, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "366:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2"}, "value": "2"}, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": {"hexValue": "3634", "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "371:2:6", "typeDescriptions": {"typeIdentifier": "t_rational_64_by_1", "typeString": "int_const 64"}, "value": "64"}, "src": "366:7:6", "typeDescriptions": {"typeIdentifier": "t_rational_18446744073709551616_by_1", "typeString": "int_const 18446744073709551616"}}, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": {"id": 711, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "376:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "366:25:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "id": 713, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", "src": "365:27:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "356:36:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d61782076616c7565206578636565646564", "id": 715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "394:20:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}, "value": "Max value exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1c002bdcef5949cab4a293c83bb72285a0f09746003e1b2c0d38e7ba1a8fb791", "typeString": "literal_string \"Max value exceeded\""}], "id": 706, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "348:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 716, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "348:67:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 717, "nodeType": "ExpressionStatement", "src": "348:67:6"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"arguments": [{"id": 721, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 701, "src": "450:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 720, "name": "shrinkable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 747, "src": "439:10:6", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) pure returns (uint256)"}}, "id": 722, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "439:17:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"id": 723, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "459:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "439:35:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "432:6:6", "typeDescriptions": {"typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)"}, "typeName": {"id": 718, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "432:6:6", "typeDescriptions": {}}}, "id": 725, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "432:43:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "functionReturnParameters": 705, "id": 726, "nodeType": "Return", "src": "425:50:6"}]}, "id": 728, "implemented": true, "kind": "function", "modifiers": [], "name": "shrink", "nameLocation": "285:6:6", "nodeType": "FunctionDefinition", "parameters": {"id": 702, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 701, "mutability": "mutable", "name": "value", "nameLocation": "300:5:6", "nodeType": "VariableDeclaration", "scope": 728, "src": "292:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "292:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "291:15:6"}, "returnParameters": {"id": 705, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 704, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 728, "src": "330:6:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 703, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "330:6:6", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "329:8:6"}, "scope": 748, "src": "276:206:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}, {"body": {"id": 746, "nodeType": "Block", "src": "555:102:6", "statements": [{"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 736, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "573:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "%", "rightExpression": {"id": 737, "name": "DEDUCTED_DIGITS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 686, "src": "581:15:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "573:23:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": {"hexValue": "30", "id": 739, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "600:1:6", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "573:28:6", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "4d617820707265636973696f6e206578636565646564", "id": 741, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "603:24:6", "typeDescriptions": {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}, "value": "Max precision exceeded"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_a90ec9302b4bc57becca0060a5bf4607db76e534ae1c00359aee6816948b8285", "typeString": "literal_string \"Max precision exceeded\""}], "id": 735, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "565:7:6", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "565:63:6", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 743, "nodeType": "ExpressionStatement", "src": "565:63:6"}, {"expression": {"id": 744, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 730, "src": "645:5:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 734, "id": 745, "nodeType": "Return", "src": "638:12:6"}]}, "id": 747, "implemented": true, "kind": "function", "modifiers": [], "name": "shrinkable", "nameLocation": "497:10:6", "nodeType": "FunctionDefinition", "parameters": {"id": 731, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 730, "mutability": "mutable", "name": "value", "nameLocation": "516:5:6", "nodeType": "VariableDeclaration", "scope": 747, "src": "508:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 729, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "508:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "507:15:6"}, "returnParameters": {"id": 734, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 733, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 747, "src": "546:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 732, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "546:7:6", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "545:9:6"}, "scope": 748, "src": "488:169:6", "stateMutability": "pure", "virtual": false, "visibility": "internal"}], "scope": 749, "src": "253:406:6", "usedErrors": []}], "src": "45:615:6"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol": {"AST": {"absolutePath": "contracts/modules/DAO.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "DAO": [56], "DEDUCTED_DIGITS": [686], "IERC20": [1087], "ISSVDAO": [382], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVDAO": [290], "SSVModules": [874], "SSVStorage": [944], "SSVStorageProtocol": [1009], "StorageData": [921], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 57, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 1, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:7"}, {"absolutePath": "contracts/modules/SSVDAO.sol", "file": "./SSVDAO.sol", "id": 2, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 57, "sourceUnit": 291, "src": "70:22:7", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 3, "name": "SSVDAO", "nameLocations": ["110:6:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 290, "src": "110:6:7"}, "id": 4, "nodeType": "InheritanceSpecifier", "src": "110:6:7"}], "canonicalName": "DAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 56, "linearizedBaseContracts": [56, 290, 382, 864], "name": "DAO", "nameLocation": "103:3:7", "nodeType": "ContractDefinition", "nodes": [{"body": {"id": 22, "nodeType": "Block", "src": "137:111:7", "statements": [{"assignments": [9], "declarations": [{"constant": false, "id": 9, "mutability": "mutable", "name": "sp", "nameLocation": "171:2:7", "nodeType": "VariableDeclaration", "scope": 22, "src": "147:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 8, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 7, "name": "StorageProtocol", "nameLocations": ["147:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "147:15:7"}, "referencedDeclaration": 986, "src": "147:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 13, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 10, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "176:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 11, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "195:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "176:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 12, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "176:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "147:54:7"}, {"expression": {"id": 20, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 14, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 9, "src": "211:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 16, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "214:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "211:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}, "id": 19, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": {"hexValue": "313030303030303030", "id": 17, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "227:9:7", "typeDescriptions": {"typeIdentifier": "t_rational_100000000_by_1", "typeString": "int_const 100000000"}, "value": "100000000"}, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": {"hexValue": "3130", "id": 18, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "239:2:7", "typeDescriptions": {"typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10"}, "value": "10"}, "src": "227:14:7", "typeDescriptions": {"typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000"}}, "src": "211:30:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 21, "nodeType": "ExpressionStatement", "src": "211:30:7"}]}, "id": 23, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": {"id": 5, "nodeType": "ParameterList", "parameters": [], "src": "134:2:7"}, "returnParameters": {"id": 6, "nodeType": "ParameterList", "parameters": [], "src": "137:0:7"}, "scope": 56, "src": "123:125:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 34, "nodeType": "Block", "src": "306:43:7", "statements": [{"expression": {"arguments": [{"id": 31, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 25, "src": "338:3:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 28, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "316:4:7", "typeDescriptions": {"typeIdentifier": "t_contract$_DAO_$56", "typeString": "contract DAO"}}, "id": 30, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "321:16:7", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "316:21:7", "typeDescriptions": {"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external"}}, "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "316:26:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 33, "nodeType": "ExpressionStatement", "src": "316:26:7"}]}, "functionSelector": "d7ec4c5f", "id": 35, "implemented": true, "kind": "function", "modifiers": [], "name": "check_updateNetworkFee", "nameLocation": "263:22:7", "nodeType": "FunctionDefinition", "parameters": {"id": 26, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 25, "mutability": "mutable", "name": "fee", "nameLocation": "294:3:7", "nodeType": "VariableDeclaration", "scope": 35, "src": "286:11:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 24, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "286:7:7", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "285:13:7"}, "returnParameters": {"id": 27, "nodeType": "ParameterList", "parameters": [], "src": "306:0:7"}, "scope": 56, "src": "254:95:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}, {"body": {"id": 54, "nodeType": "Block", "src": "415:106:7", "statements": [{"assignments": [42], "declarations": [{"constant": false, "id": 42, "mutability": "mutable", "name": "sp", "nameLocation": "449:2:7", "nodeType": "VariableDeclaration", "scope": 54, "src": "425:26:7", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 41, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 40, "name": "StorageProtocol", "nameLocations": ["425:15:7"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "425:15:7"}, "referencedDeclaration": 986, "src": "425:15:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 46, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 43, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "454:18:7", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 44, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "473:4:7", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "454:23:7", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 45, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "454:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "425:54:7"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 51, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"expression": {"id": 48, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42, "src": "496:2:7", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 49, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "499:10:7", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "496:13:7", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 50, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "512:1:7", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "496:17:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}], "id": 47, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "489:6:7", "typeDescriptions": {"typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure"}}, "id": 52, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "489:25:7", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 53, "nodeType": "ExpressionStatement", "src": "489:25:7"}]}, "functionSelector": "23eb9a03", "id": 55, "implemented": true, "kind": "function", "modifiers": [], "name": "check_invariant_networkfee", "nameLocation": "364:26:7", "nodeType": "FunctionDefinition", "parameters": {"id": 36, "nodeType": "ParameterList", "parameters": [], "src": "390:2:7"}, "returnParameters": {"id": 39, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 38, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 55, "src": "409:4:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 37, "name": "bool", "nodeType": "ElementaryTypeName", "src": "409:4:7", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "408:6:7"}, "scope": 56, "src": "355:166:7", "stateMutability": "nonpayable", "virtual": false, "visibility": "public"}], "scope": 57, "src": "94:429:7", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:479:7"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol": {"AST": {"absolutePath": "contracts/modules/SSVDAO.sol", "exportedSymbols": {"CoreLib": [513], "Counters": [1161], "DEDUCTED_DIGITS": [686], "IERC20": [1087], "ISSVDAO": [382], "ISSVNetworkCore": [864], "ProtocolLib": [681], "SSVDAO": [290], "SSVModules": [874], "SSVStorage": [944], "SSVStorageProtocol": [1009], "StorageData": [921], "StorageProtocol": [986], "Types256": [748], "Types64": [699]}, "id": 291, "license": "GPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [{"id": 58, "literals": ["solidity", "0.8", ".18"], "nodeType": "PragmaDirective", "src": "45:23:8"}, {"absolutePath": "contracts/interfaces/ISSVDAO.sol", "file": "../interfaces/ISSVDAO.sol", "id": 59, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 383, "src": "70:35:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/Types.sol", "file": "../libraries/Types.sol", "id": 60, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 749, "src": "106:32:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/ProtocolLib.sol", "file": "../libraries/ProtocolLib.sol", "id": 61, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 682, "src": "139:38:8", "symbolAliases": [], "unitAlias": ""}, {"absolutePath": "contracts/libraries/CoreLib.sol", "file": "../libraries/CoreLib.sol", "id": 62, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 291, "sourceUnit": 514, "src": "178:34:8", "symbolAliases": [], "unitAlias": ""}, {"abstract": false, "baseContracts": [{"baseName": {"id": 63, "name": "ISSVDAO", "nameLocations": ["233:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 382, "src": "233:7:8"}, "id": 64, "nodeType": "InheritanceSpecifier", "src": "233:7:8"}], "canonicalName": "SSVDAO", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 290, "linearizedBaseContracts": [290, 382, 864], "name": "SSVDAO", "nameLocation": "223:6:8", "nodeType": "ContractDefinition", "nodes": [{"global": false, "id": 67, "libraryName": {"id": 65, "name": "Types64", "nameLocations": ["253:7:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 699, "src": "253:7:8"}, "nodeType": "UsingForDirective", "src": "247:25:8", "typeName": {"id": 66, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "265:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}}, {"global": false, "id": 70, "libraryName": {"id": 68, "name": "Types256", "nameLocations": ["283:8:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 748, "src": "283:8:8"}, "nodeType": "UsingForDirective", "src": "277:27:8", "typeName": {"id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "296:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}}, {"global": false, "id": 74, "libraryName": {"id": 71, "name": "ProtocolLib", "nameLocations": ["316:11:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 681, "src": "316:11:8"}, "nodeType": "UsingForDirective", "src": "310:38:8", "typeName": {"id": 73, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 72, "name": "StorageProtocol", "nameLocations": ["332:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "332:15:8"}, "referencedDeclaration": 986, "src": "332:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}}, {"constant": true, "id": 77, "mutability": "constant", "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nameLocation": "378:29:8", "nodeType": "VariableDeclaration", "scope": 290, "src": "354:63:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 75, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "354:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "value": {"hexValue": "3130305f383030", "id": 76, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "410:7:8", "typeDescriptions": {"typeIdentifier": "t_rational_100800_by_1", "typeString": "int_const 100800"}, "value": "100_800"}, "visibility": "private"}, {"baseFunctions": [301], "body": {"id": 108, "nodeType": "Block", "src": "481:209:8", "statements": [{"assignments": [85], "declarations": [{"constant": false, "id": 85, "mutability": "mutable", "name": "sp", "nameLocation": "515:2:8", "nodeType": "VariableDeclaration", "scope": 108, "src": "491:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 84, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 83, "name": "StorageProtocol", "nameLocations": ["491:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "491:15:8"}, "referencedDeclaration": 986, "src": "491:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 89, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 86, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "520:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 87, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "539:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "520:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 88, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "520:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "491:54:8"}, {"assignments": [91], "declarations": [{"constant": false, "id": 91, "mutability": "mutable", "name": "previousFee", "nameLocation": "562:11:8", "nodeType": "VariableDeclaration", "scope": 108, "src": "555:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 90, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "555:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 94, "initialValue": {"expression": {"id": 92, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "576:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 93, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "579:10:8", "memberName": "networkFee", "nodeType": "MemberAccess", "referencedDeclaration": 961, "src": "576:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "555:34:8"}, {"expression": {"arguments": [{"id": 98, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "620:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 95, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85, "src": "600:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 97, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "603:16:8", "memberName": "updateNetworkFee", "nodeType": "MemberAccess", "referencedDeclaration": 584, "src": "600:19:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_StorageProtocol_$986_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer,uint256)"}}, "id": 99, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "600:24:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 100, "nodeType": "ExpressionStatement", "src": "600:24:8"}, {"eventCall": {"arguments": [{"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 102, "name": "previousFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 91, "src": "657:11:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 103, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "669:6:8", "memberName": "expand", "nodeType": "MemberAccess", "referencedDeclaration": 698, "src": "657:18:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint256_$attached_to$_t_uint64_$", "typeString": "function (uint64) pure returns (uint256)"}}, "id": 104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "657:20:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"id": 105, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 79, "src": "679:3:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 101, "name": "NetworkFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 370, "src": "639:17:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)"}}, "id": 106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "639:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 107, "nodeType": "EmitStatement", "src": "634:49:8"}]}, "functionSelector": "1f1f9fd5", "id": 109, "implemented": true, "kind": "function", "modifiers": [], "name": "updateNetworkFee", "nameLocation": "433:16:8", "nodeType": "FunctionDefinition", "overrides": {"id": 81, "nodeType": "OverrideSpecifier", "overrides": [], "src": "472:8:8"}, "parameters": {"id": 80, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 79, "mutability": "mutable", "name": "fee", "nameLocation": "458:3:8", "nodeType": "VariableDeclaration", "scope": 109, "src": "450:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 78, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "450:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "449:13:8"}, "returnParameters": {"id": 82, "nodeType": "ParameterList", "parameters": [], "src": "481:0:8"}, "scope": 290, "src": "424:266:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [307], "body": {"id": 164, "nodeType": "Block", "src": "763:447:8", "statements": [{"assignments": [117], "declarations": [{"constant": false, "id": 117, "mutability": "mutable", "name": "sp", "nameLocation": "797:2:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "773:26:8", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}, "typeName": {"id": 116, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 115, "name": "StorageProtocol", "nameLocations": ["773:15:8"], "nodeType": "IdentifierPath", "referencedDeclaration": 986, "src": "773:15:8"}, "referencedDeclaration": 986, "src": "773:15:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol"}}, "visibility": "internal"}], "id": 121, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 118, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "802:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "821:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "802:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "802:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "nodeType": "VariableDeclarationStatement", "src": "773:54:8"}, {"assignments": [123], "declarations": [{"constant": false, "id": 123, "mutability": "mutable", "name": "shrunkAmount", "nameLocation": "845:12:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "838:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 122, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "838:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 127, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 124, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "860:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "867:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "860:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "860:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "838:37:8"}, {"assignments": [129], "declarations": [{"constant": false, "id": 129, "mutability": "mutable", "name": "networkBalance", "nameLocation": "893:14:8", "nodeType": "VariableDeclaration", "scope": 164, "src": "886:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 128, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "886:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "id": 133, "initialValue": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 130, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "910:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "913:20:8", "memberName": "networkTotalEarnings", "nodeType": "MemberAccess", "referencedDeclaration": 637, "src": "910:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_view$_t_struct$_StorageProtocol_$986_storage_ptr_$returns$_t_uint64_$attached_to$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function (struct StorageProtocol storage pointer) view returns (uint64)"}}, "id": 132, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "910:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "VariableDeclarationStatement", "src": "886:49:8"}, {"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 134, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "950:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"id": 135, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, "src": "965:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "950:29:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 141, "nodeType": "IfStatement", "src": "946:88:8", "trueBody": {"id": 140, "nodeType": "Block", "src": "981:53:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 137, "name": "InsufficientBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 819, "src": "1002:19:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 138, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1002:21:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 139, "nodeType": "RevertStatement", "src": "995:28:8"}]}}, {"expression": {"id": 148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 142, "name": "sp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, "src": "1044:2:8", "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 144, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1047:10:8", "memberName": "daoBalance", "nodeType": "MemberAccess", "referencedDeclaration": 967, "src": "1044:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 145, "name": "networkBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 129, "src": "1060:14:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"id": 146, "name": "shrunkAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123, "src": "1077:12:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1060:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1044:45:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 149, "nodeType": "ExpressionStatement", "src": "1044:45:8"}, {"expression": {"arguments": [{"expression": {"id": 153, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1124:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1128:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1124:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, {"id": 155, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "1136:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_address", "typeString": "address"}, {"typeIdentifier": "t_uint256", "typeString": "uint256"}], "expression": {"id": 150, "name": "CoreLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 513, "src": "1100:7:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_CoreLib_$513_$", "typeString": "type(library CoreLib)"}}, "id": 152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:15:8", "memberName": "transferBalance", "nodeType": "MemberAccess", "referencedDeclaration": 424, "src": "1100:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)"}}, "id": 156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1100:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 157, "nodeType": "ExpressionStatement", "src": "1100:43:8"}, {"eventCall": {"arguments": [{"id": 159, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, "src": "1184:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, {"expression": {"id": 160, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1192:3:8", "typeDescriptions": {"typeIdentifier": "t_magic_message", "typeString": "msg"}}, "id": 161, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1196:6:8", "memberName": "sender", "nodeType": "MemberAccess", "src": "1192:10:8", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}, {"typeIdentifier": "t_address", "typeString": "address"}], "id": 158, "name": "NetworkEarningsWithdrawn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "1159:24:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", "typeString": "function (uint256,address)"}}, "id": 162, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1159:44:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 163, "nodeType": "EmitStatement", "src": "1154:49:8"}]}, "functionSelector": "d2231741", "id": 165, "implemented": true, "kind": "function", "modifiers": [], "name": "withdrawNetworkEarnings", "nameLocation": "705:23:8", "nodeType": "FunctionDefinition", "overrides": {"id": 113, "nodeType": "OverrideSpecifier", "overrides": [], "src": "754:8:8"}, "parameters": {"id": 112, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 111, "mutability": "mutable", "name": "amount", "nameLocation": "737:6:8", "nodeType": "VariableDeclaration", "scope": 165, "src": "729:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 110, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "729:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "728:16:8"}, "returnParameters": {"id": 114, "nodeType": "ParameterList", "parameters": [], "src": "763:0:8"}, "scope": 290, "src": "696:514:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [313], "body": {"id": 183, "nodeType": "Block", "src": "1293:136:8", "statements": [{"expression": {"id": 177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 171, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1303:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1322:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1303:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1303:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 175, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1329:22:8", "memberName": "operatorMaxFeeIncrease", "nodeType": "MemberAccess", "referencedDeclaration": 982, "src": "1303:48:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 176, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "1354:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1303:61:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 178, "nodeType": "ExpressionStatement", "src": "1303:61:8"}, {"eventCall": {"arguments": [{"id": 180, "name": "percentage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 167, "src": "1411:10:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 179, "name": "OperatorFeeIncreaseLimitUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 347, "src": "1379:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1379:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 182, "nodeType": "EmitStatement", "src": "1374:48:8"}]}, "functionSelector": "3631983f", "id": 184, "implemented": true, "kind": "function", "modifiers": [], "name": "updateOperatorFeeIncreaseLimit", "nameLocation": "1225:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 169, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1284:8:8"}, "parameters": {"id": 168, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 167, "mutability": "mutable", "name": "percentage", "nameLocation": "1263:10:8", "nodeType": "VariableDeclaration", "scope": 184, "src": "1256:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 166, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1256:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1255:19:8"}, "returnParameters": {"id": 170, "nodeType": "ParameterList", "parameters": [], "src": "1293:0:8"}, "scope": 290, "src": "1216:213:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [319], "body": {"id": 202, "nodeType": "Block", "src": "1515:144:8", "statements": [{"expression": {"id": 196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 190, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1525:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1544:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1525:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 193, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1525:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1551:24:8", "memberName": "declareOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 976, "src": "1525:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 195, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 186, "src": "1578:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1525:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 197, "nodeType": "ExpressionStatement", "src": "1525:66:8"}, {"eventCall": {"arguments": [{"id": 199, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 186, "src": "1638:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 198, "name": "DeclareOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 351, "src": "1606:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1606:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 201, "nodeType": "EmitStatement", "src": "1601:51:8"}]}, "functionSelector": "79e3e4e4", "id": 203, "implemented": true, "kind": "function", "modifiers": [], "name": "updateDeclareOperatorFeePeriod", "nameLocation": "1444:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 188, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1506:8:8"}, "parameters": {"id": 187, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 186, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1482:13:8", "nodeType": "VariableDeclaration", "scope": 203, "src": "1475:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 185, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1475:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1474:22:8"}, "returnParameters": {"id": 189, "nodeType": "ParameterList", "parameters": [], "src": "1515:0:8"}, "scope": 290, "src": "1435:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [325], "body": {"id": 221, "nodeType": "Block", "src": "1745:144:8", "statements": [{"expression": {"id": 215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 209, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "1755:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1774:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "1755:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1755:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 213, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1781:24:8", "memberName": "executeOperatorFeePeriod", "nodeType": "MemberAccess", "referencedDeclaration": 979, "src": "1755:50:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 214, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "1808:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1755:66:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 216, "nodeType": "ExpressionStatement", "src": "1755:66:8"}, {"eventCall": {"arguments": [{"id": 218, "name": "timeInSeconds", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 205, "src": "1868:13:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 217, "name": "ExecuteOperatorFeePeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "1836:31:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 219, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1836:46:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 220, "nodeType": "EmitStatement", "src": "1831:51:8"}]}, "functionSelector": "eb608022", "id": 222, "implemented": true, "kind": "function", "modifiers": [], "name": "updateExecuteOperatorFeePeriod", "nameLocation": "1674:30:8", "nodeType": "FunctionDefinition", "overrides": {"id": 207, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1736:8:8"}, "parameters": {"id": 206, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 205, "mutability": "mutable", "name": "timeInSeconds", "nameLocation": "1712:13:8", "nodeType": "VariableDeclaration", "scope": 222, "src": "1705:20:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 204, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1705:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1704:22:8"}, "returnParameters": {"id": 208, "nodeType": "ParameterList", "parameters": [], "src": "1745:0:8"}, "scope": 290, "src": "1665:224:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [331], "body": {"id": 248, "nodeType": "Block", "src": "1970:254:8", "statements": [{"condition": {"commonType": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "id": 230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 228, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "1984:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": {"id": 229, "name": "MINIMAL_LIQUIDATION_THRESHOLD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 77, "src": "1993:29:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "1984:38:8", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "id": 235, "nodeType": "IfStatement", "src": "1980:106:8", "trueBody": {"id": 234, "nodeType": "Block", "src": "2024:62:8", "statements": [{"errorCall": {"arguments": [], "expression": {"argumentTypes": [], "id": 231, "name": "NewBlockPeriodIsBelowMinimum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 843, "src": "2045:28:8", "typeDescriptions": {"typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure"}}, "id": 232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2045:30:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 233, "nodeType": "RevertStatement", "src": "2038:37:8"}]}}, {"expression": {"id": 242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 236, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2096:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2115:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2096:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 239, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2096:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 240, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2122:30:8", "memberName": "minimumBlocksBeforeLiquidation", "nodeType": "MemberAccess", "referencedDeclaration": 970, "src": "2096:56:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 241, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2155:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2096:65:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 243, "nodeType": "ExpressionStatement", "src": "2096:65:8"}, {"eventCall": {"arguments": [{"id": 245, "name": "blocks", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 224, "src": "2210:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 244, "name": "LiquidationThresholdPeriodUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "2176:33:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2176:41:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 247, "nodeType": "EmitStatement", "src": "2171:46:8"}]}, "functionSelector": "6512447d", "id": 249, "implemented": true, "kind": "function", "modifiers": [], "name": "updateLiquidationThresholdPeriod", "nameLocation": "1904:32:8", "nodeType": "FunctionDefinition", "overrides": {"id": 226, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1961:8:8"}, "parameters": {"id": 225, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 224, "mutability": "mutable", "name": "blocks", "nameLocation": "1944:6:8", "nodeType": "VariableDeclaration", "scope": 249, "src": "1937:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 223, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1937:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "1936:15:8"}, "returnParameters": {"id": 227, "nodeType": "ParameterList", "parameters": [], "src": "1970:0:8"}, "scope": 290, "src": "1895:329:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [337], "body": {"id": 269, "nodeType": "Block", "src": "2308:147:8", "statements": [{"expression": {"id": 263, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 255, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2318:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2337:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2318:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2318:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 259, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2344:28:8", "memberName": "minimumLiquidationCollateral", "nodeType": "MemberAccess", "referencedDeclaration": 973, "src": "2318:54:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 260, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 251, "src": "2375:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 261, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2382:6:8", "memberName": "shrink", "nodeType": "MemberAccess", "referencedDeclaration": 728, "src": "2375:13:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$", "typeString": "function (uint256) pure returns (uint64)"}}, "id": 262, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2375:15:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2318:72:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 264, "nodeType": "ExpressionStatement", "src": "2318:72:8"}, {"eventCall": {"arguments": [{"id": 266, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 251, "src": "2441:6:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint256", "typeString": "uint256"}], "id": 265, "name": "MinimumLiquidationCollateralUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 363, "src": "2405:35:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)"}}, "id": 267, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2405:43:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 268, "nodeType": "EmitStatement", "src": "2400:48:8"}]}, "functionSelector": "b4c9c408", "id": 270, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMinimumLiquidationCollateral", "nameLocation": "2239:34:8", "nodeType": "FunctionDefinition", "overrides": {"id": 253, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2299:8:8"}, "parameters": {"id": 252, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 251, "mutability": "mutable", "name": "amount", "nameLocation": "2282:6:8", "nodeType": "VariableDeclaration", "scope": 270, "src": "2274:14:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 250, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2274:7:8", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2273:16:8"}, "returnParameters": {"id": 254, "nodeType": "ParameterList", "parameters": [], "src": "2308:0:8"}, "scope": 290, "src": "2230:225:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"baseFunctions": [343], "body": {"id": 288, "nodeType": "Block", "src": "2528:114:8", "statements": [{"expression": {"id": 282, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"arguments": [], "expression": {"argumentTypes": [], "expression": {"id": 276, "name": "SSVStorageProtocol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1009, "src": "2538:18:8", "typeDescriptions": {"typeIdentifier": "t_type$_t_contract$_SSVStorageProtocol_$1009_$", "typeString": "type(library SSVStorageProtocol)"}}, "id": 278, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2557:4:8", "memberName": "load", "nodeType": "MemberAccess", "referencedDeclaration": 1008, "src": "2538:23:8", "typeDescriptions": {"typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_StorageProtocol_$986_storage_ptr_$", "typeString": "function () pure returns (struct StorageProtocol storage pointer)"}}, "id": 279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2538:25:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_struct$_StorageProtocol_$986_storage_ptr", "typeString": "struct StorageProtocol storage pointer"}}, "id": 280, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "2564:14:8", "memberName": "operatorMaxFee", "nodeType": "MemberAccess", "referencedDeclaration": 985, "src": "2538:40:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"id": 281, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2581:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "src": "2538:49:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "id": 283, "nodeType": "ExpressionStatement", "src": "2538:49:8"}, {"eventCall": {"arguments": [{"id": 285, "name": "maxFee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 272, "src": "2628:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}], "expression": {"argumentTypes": [{"typeIdentifier": "t_uint64", "typeString": "uint64"}], "id": 284, "name": "OperatorMaximumFeeUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 381, "src": "2602:25:8", "typeDescriptions": {"typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", "typeString": "function (uint64)"}}, "id": 286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2602:33:8", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 287, "nodeType": "EmitStatement", "src": "2597:38:8"}]}, "functionSelector": "e39c6744", "id": 289, "implemented": true, "kind": "function", "modifiers": [], "name": "updateMaximumOperatorFee", "nameLocation": "2470:24:8", "nodeType": "FunctionDefinition", "overrides": {"id": 274, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2519:8:8"}, "parameters": {"id": 273, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 272, "mutability": "mutable", "name": "maxFee", "nameLocation": "2502:6:8", "nodeType": "VariableDeclaration", "scope": 289, "src": "2495:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}, "typeName": {"id": 271, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2495:6:8", "typeDescriptions": {"typeIdentifier": "t_uint64", "typeString": "uint64"}}, "visibility": "internal"}], "src": "2494:15:8"}, "returnParameters": {"id": 275, "nodeType": "ParameterList", "parameters": [], "src": "2528:0:8"}, "scope": 290, "src": "2461:181:8", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 291, "src": "214:2430:8", "usedErrors": [805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827, 829, 831, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861, 863]}], "src": "45:2600:8"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": {"IERC20": [1087]}, "id": 1088, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1011, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "106:23:9"}, {"abstract": false, "baseContracts": [], "canonicalName": "IERC20", "contractDependencies": [], "contractKind": "interface", "documentation": {"id": 1012, "nodeType": "StructuredDocumentation", "src": "131:70:9", "text": " @dev Interface of the ERC20 standard as defined in the EIP."}, "fullyImplemented": false, "id": 1087, "linearizedBaseContracts": [1087], "name": "IERC20", "nameLocation": "212:6:9", "nodeType": "ContractDefinition", "nodes": [{"anonymous": false, "documentation": {"id": 1013, "nodeType": "StructuredDocumentation", "src": "225:158:9", "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."}, "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "id": 1021, "name": "Transfer", "nameLocation": "394:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1020, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1015, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "419:4:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "403:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1014, "name": "address", "nodeType": "ElementaryTypeName", "src": "403:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1017, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "441:2:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "425:18:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1016, "name": "address", "nodeType": "ElementaryTypeName", "src": "425:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1019, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "453:5:9", "nodeType": "VariableDeclaration", "scope": 1021, "src": "445:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1018, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "445:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "402:57:9"}, "src": "388:72:9"}, {"anonymous": false, "documentation": {"id": 1022, "nodeType": "StructuredDocumentation", "src": "466:148:9", "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."}, "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "id": 1030, "name": "Approval", "nameLocation": "625:8:9", "nodeType": "EventDefinition", "parameters": {"id": 1029, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1024, "indexed": true, "mutability": "mutable", "name": "owner", "nameLocation": "650:5:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "634:21:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1023, "name": "address", "nodeType": "ElementaryTypeName", "src": "634:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1026, "indexed": true, "mutability": "mutable", "name": "spender", "nameLocation": "673:7:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "657:23:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1025, "name": "address", "nodeType": "ElementaryTypeName", "src": "657:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1028, "indexed": false, "mutability": "mutable", "name": "value", "nameLocation": "690:5:9", "nodeType": "VariableDeclaration", "scope": 1030, "src": "682:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1027, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "682:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "633:63:9"}, "src": "619:78:9"}, {"documentation": {"id": 1031, "nodeType": "StructuredDocumentation", "src": "703:66:9", "text": " @dev Returns the amount of tokens in existence."}, "functionSelector": "18160ddd", "id": 1036, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "783:11:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1032, "nodeType": "ParameterList", "parameters": [], "src": "794:2:9"}, "returnParameters": {"id": 1035, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1034, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1036, "src": "820:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1033, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "820:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "819:9:9"}, "scope": 1087, "src": "774:55:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1037, "nodeType": "StructuredDocumentation", "src": "835:72:9", "text": " @dev Returns the amount of tokens owned by `account`."}, "functionSelector": "70a08231", "id": 1044, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "921:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1040, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1039, "mutability": "mutable", "name": "account", "nameLocation": "939:7:9", "nodeType": "VariableDeclaration", "scope": 1044, "src": "931:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1038, "name": "address", "nodeType": "ElementaryTypeName", "src": "931:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "930:17:9"}, "returnParameters": {"id": 1043, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1042, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1044, "src": "971:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1041, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "971:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "970:9:9"}, "scope": 1087, "src": "912:68:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1045, "nodeType": "StructuredDocumentation", "src": "986:202:9", "text": " @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "a9059cbb", "id": 1054, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "1202:8:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1050, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1047, "mutability": "mutable", "name": "to", "nameLocation": "1219:2:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1211:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1046, "name": "address", "nodeType": "ElementaryTypeName", "src": "1211:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1049, "mutability": "mutable", "name": "amount", "nameLocation": "1231:6:9", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1223:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1048, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1223:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1210:28:9"}, "returnParameters": {"id": 1053, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1052, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1054, "src": "1257:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1051, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1257:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "1256:6:9"}, "scope": 1087, "src": "1193:70:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1055, "nodeType": "StructuredDocumentation", "src": "1269:264:9", "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."}, "functionSelector": "dd62ed3e", "id": 1064, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "1547:9:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1060, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1057, "mutability": "mutable", "name": "owner", "nameLocation": "1565:5:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1557:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1056, "name": "address", "nodeType": "ElementaryTypeName", "src": "1557:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1059, "mutability": "mutable", "name": "spender", "nameLocation": "1580:7:9", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1572:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1058, "name": "address", "nodeType": "ElementaryTypeName", "src": "1572:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}], "src": "1556:32:9"}, "returnParameters": {"id": 1063, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1062, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1064, "src": "1612:7:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1061, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "1611:9:9"}, "scope": 1087, "src": "1538:83:9", "stateMutability": "view", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1065, "nodeType": "StructuredDocumentation", "src": "1627:642:9", "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."}, "functionSelector": "095ea7b3", "id": 1074, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "2283:7:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1070, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1067, "mutability": "mutable", "name": "spender", "nameLocation": "2299:7:9", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2291:15:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1066, "name": "address", "nodeType": "ElementaryTypeName", "src": "2291:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1069, "mutability": "mutable", "name": "amount", "nameLocation": "2316:6:9", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2308:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1068, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2308:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2290:33:9"}, "returnParameters": {"id": 1073, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1072, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1074, "src": "2342:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1071, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2342:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2341:6:9"}, "scope": 1087, "src": "2274:74:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}, {"documentation": {"id": 1075, "nodeType": "StructuredDocumentation", "src": "2354:287:9", "text": " @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."}, "functionSelector": "23b872dd", "id": 1086, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "2655:12:9", "nodeType": "FunctionDefinition", "parameters": {"id": 1082, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1077, "mutability": "mutable", "name": "from", "nameLocation": "2676:4:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2668:12:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1076, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1079, "mutability": "mutable", "name": "to", "nameLocation": "2690:2:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2682:10:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}, "typeName": {"id": 1078, "name": "address", "nodeType": "ElementaryTypeName", "src": "2682:7:9", "stateMutability": "nonpayable", "typeDescriptions": {"typeIdentifier": "t_address", "typeString": "address"}}, "visibility": "internal"}, {"constant": false, "id": 1081, "mutability": "mutable", "name": "amount", "nameLocation": "2702:6:9", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2694:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1080, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2694:7:9", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "2667:42:9"}, "returnParameters": {"id": 1085, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1084, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1086, "src": "2728:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}, "typeName": {"id": 1083, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2728:4:9", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, "visibility": "internal"}], "src": "2727:6:9"}, "scope": 1087, "src": "2646:88:9", "stateMutability": "nonpayable", "virtual": false, "visibility": "external"}], "scope": 1088, "src": "202:2534:9", "usedErrors": []}], "src": "106:2631:9"}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol": {"AST": {"absolutePath": "node_modules/@openzeppelin/contracts/utils/Counters.sol", "exportedSymbols": {"Counters": [1161]}, "id": 1162, "license": "MIT", "nodeType": "SourceUnit", "nodes": [{"id": 1089, "literals": ["solidity", "^", "0.8", ".0"], "nodeType": "PragmaDirective", "src": "87:23:10"}, {"abstract": false, "baseContracts": [], "canonicalName": "Counters", "contractDependencies": [], "contractKind": "library", "documentation": {"id": 1090, "nodeType": "StructuredDocumentation", "src": "112:311:10", "text": " @title Counters\n @author Matt Condon (@shrugs)\n @dev Provides counters that can only be incremented, decremented or reset. 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;`"}, "fullyImplemented": true, "id": 1161, "linearizedBaseContracts": [1161], "name": "Counters", "nameLocation": "432:8:10", "nodeType": "ContractDefinition", "nodes": [{"canonicalName": "Counters.Counter", "id": 1093, "members": [{"constant": false, "id": 1092, "mutability": "mutable", "name": "_value", "nameLocation": "794:6:10", "nodeType": "VariableDeclaration", "scope": 1093, "src": "786:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1091, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "786:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "name": "Counter", "nameLocation": "454:7:10", "nodeType": "StructDefinition", "scope": 1161, "src": "447:374:10", "visibility": "public"}, {"body": {"id": 1104, "nodeType": "Block", "src": "901:38:10", "statements": [{"expression": {"expression": {"id": 1101, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1096, "src": "918:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1102, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "926:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "918:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "functionReturnParameters": 1100, "id": 1103, "nodeType": "Return", "src": "911:21:10"}]}, "id": 1105, "implemented": true, "kind": "function", "modifiers": [], "name": "current", "nameLocation": "836:7:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1097, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1096, "mutability": "mutable", "name": "counter", "nameLocation": "860:7:10", "nodeType": "VariableDeclaration", "scope": 1105, "src": "844:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1095, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1094, "name": "Counter", "nameLocations": ["844:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "844:7:10"}, "referencedDeclaration": 1093, "src": "844:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "843:25:10"}, "returnParameters": {"id": 1100, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1099, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 1105, "src": "892:7:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1098, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "892:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "src": "891:9:10"}, "scope": 1161, "src": "827:112:10", "stateMutability": "view", "virtual": false, "visibility": "internal"}, {"body": {"id": 1118, "nodeType": "Block", "src": "998:70:10", "statements": [{"id": 1117, "nodeType": "UncheckedBlock", "src": "1008:54:10", "statements": [{"expression": {"id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1111, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1108, "src": "1032:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1113, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1040:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1032:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "+=", "rightHandSide": {"hexValue": "31", "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1050:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1032:19:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1116, "nodeType": "ExpressionStatement", "src": "1032:19:10"}]}]}, "id": 1119, "implemented": true, "kind": "function", "modifiers": [], "name": "increment", "nameLocation": "954:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1109, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1108, "mutability": "mutable", "name": "counter", "nameLocation": "980:7:10", "nodeType": "VariableDeclaration", "scope": 1119, "src": "964:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1107, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1106, "name": "Counter", "nameLocations": ["964:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "964:7:10"}, "referencedDeclaration": 1093, "src": "964:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "963:25:10"}, "returnParameters": {"id": 1110, "nodeType": "ParameterList", "parameters": [], "src": "998:0:10"}, "scope": 1161, "src": "945:123:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1146, "nodeType": "Block", "src": "1127:176:10", "statements": [{"assignments": [1126], "declarations": [{"constant": false, "id": 1126, "mutability": "mutable", "name": "value", "nameLocation": "1145:5:10", "nodeType": "VariableDeclaration", "scope": 1146, "src": "1137:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "typeName": {"id": 1125, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1137:7:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "visibility": "internal"}], "id": 1129, "initialValue": {"expression": {"id": 1127, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "1153:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1128, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberLocation": "1161:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1153:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "VariableDeclarationStatement", "src": "1137:30:10"}, {"expression": {"arguments": [{"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1131, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1126, "src": "1185:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": {"hexValue": "30", "id": 1132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1193:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1185:9:10", "typeDescriptions": {"typeIdentifier": "t_bool", "typeString": "bool"}}, {"hexValue": "436f756e7465723a2064656372656d656e74206f766572666c6f77", "id": 1134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1196:29:10", "typeDescriptions": {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}, "value": "Counter: decrement overflow"}], "expression": {"argumentTypes": [{"typeIdentifier": "t_bool", "typeString": "bool"}, {"typeIdentifier": "t_stringliteral_1dfd0d5389474d871b8e8929aab9d4def041f55f90f625754fb5f9a9ba08af6f", "typeString": "literal_string \"Counter: decrement overflow\""}], "id": 1130, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1177:7:10", "typeDescriptions": {"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure"}}, "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1177:49:10", "tryCall": false, "typeDescriptions": {"typeIdentifier": "t_tuple$__$", "typeString": "tuple()"}}, "id": 1136, "nodeType": "ExpressionStatement", "src": "1177:49:10"}, {"id": 1145, "nodeType": "UncheckedBlock", "src": "1236:61:10", "statements": [{"expression": {"id": 1143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1137, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1122, "src": "1260:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1139, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1268:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1260:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"commonType": {"typeIdentifier": "t_uint256", "typeString": "uint256"}, "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": {"id": 1140, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1126, "src": "1277:5:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": {"hexValue": "31", "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1285:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1"}, "value": "1"}, "src": "1277:9:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "src": "1260:26:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1144, "nodeType": "ExpressionStatement", "src": "1260:26:10"}]}]}, "id": 1147, "implemented": true, "kind": "function", "modifiers": [], "name": "decrement", "nameLocation": "1083:9:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1123, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1122, "mutability": "mutable", "name": "counter", "nameLocation": "1109:7:10", "nodeType": "VariableDeclaration", "scope": 1147, "src": "1093:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1121, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1120, "name": "Counter", "nameLocations": ["1093:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1093:7:10"}, "referencedDeclaration": 1093, "src": "1093:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1092:25:10"}, "returnParameters": {"id": 1124, "nodeType": "ParameterList", "parameters": [], "src": "1127:0:10"}, "scope": 1161, "src": "1074:229:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}, {"body": {"id": 1159, "nodeType": "Block", "src": "1358:35:10", "statements": [{"expression": {"id": 1157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": {"expression": {"id": 1153, "name": "counter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1150, "src": "1368:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter storage pointer"}}, "id": 1155, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberLocation": "1376:6:10", "memberName": "_value", "nodeType": "MemberAccess", "referencedDeclaration": 1092, "src": "1368:14:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "nodeType": "Assignment", "operator": "=", "rightHandSide": {"hexValue": "30", "id": 1156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1385:1:10", "typeDescriptions": {"typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0"}, "value": "0"}, "src": "1368:18:10", "typeDescriptions": {"typeIdentifier": "t_uint256", "typeString": "uint256"}}, "id": 1158, "nodeType": "ExpressionStatement", "src": "1368:18:10"}]}, "id": 1160, "implemented": true, "kind": "function", "modifiers": [], "name": "reset", "nameLocation": "1318:5:10", "nodeType": "FunctionDefinition", "parameters": {"id": 1151, "nodeType": "ParameterList", "parameters": [{"constant": false, "id": 1150, "mutability": "mutable", "name": "counter", "nameLocation": "1340:7:10", "nodeType": "VariableDeclaration", "scope": 1160, "src": "1324:23:10", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}, "typeName": {"id": 1149, "nodeType": "UserDefinedTypeName", "pathNode": {"id": 1148, "name": "Counter", "nameLocations": ["1324:7:10"], "nodeType": "IdentifierPath", "referencedDeclaration": 1093, "src": "1324:7:10"}, "referencedDeclaration": 1093, "src": "1324:7:10", "typeDescriptions": {"typeIdentifier": "t_struct$_Counter_$1093_storage_ptr", "typeString": "struct Counters.Counter"}}, "visibility": "internal"}], "src": "1323:25:10"}, "returnParameters": {"id": 1152, "nodeType": "ParameterList", "parameters": [], "src": "1358:0:10"}, "scope": 1161, "src": "1309:84:10", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal"}], "scope": 1162, "src": "424:971:10", "usedErrors": []}], "src": "87:1309:10"}}}, "sourceList": ["/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol"], "contracts": {"/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVDAO.sol:ISSVDAO": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/interfaces/ISSVNetworkCore.sol:ISSVNetworkCore": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/CoreLib.sol:CoreLib": {"srcmap": "98:2002:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "98:2002:2:-:0;;;;;;;;", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumSSVModules\",\"name\":\"moduleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"moduleAddress\",\"type\":\"address\"}],\"name\":\"ModuleUpgraded\",\"type\":\"event\"}]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c080a3f63ade46492513745d84a7f4b455ba78d490688adfc8bdda1b39f1e7664736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/ProtocolLib.sol:ProtocolLib": {"srcmap": "172:1561:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "172:1561:3:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f367df4c924ef2b797808aac1dd895609dd11c3d6023a24332ce1f4100ba3cbb64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorage.sol:SSVStorage": {"srcmap": "1722:312:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1722:312:4:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fbaac9495c9545e385ed088fe749b13a6c3b937a91919594129fcda8a39c7d064736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/SSVStorageProtocol.sol:SSVStorageProtocol": {"srcmap": "1530:328:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "1530:328:5:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069a74a7ed9b155e5ef7cb0664387796f0c3d9f827213c342c1568b9da141bd2564736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types256": {"srcmap": "253:406:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "253:406:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663b8b86d4a1e264778e28e08c6412a058e99a62fbb61cbb57495bc17c98543864736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/libraries/Types.sol:Types64": {"srcmap": "118:133:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "118:133:6:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017ee1761339fb9ed787865adaeef45688ad9250e114d8f60ebf7226fcbf28e7a64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/DAO.sol:DAO": {"srcmap": "94:429:7:-:0;;;123:125;;;;;;;;;;147:26;176:25;:23;;;;;:25;;:::i;:::-;147:54;;227:14;211:2;:13;;;:30;;;;;;;;;;;;;;;;;;137:111;94:429;;1672:184:5;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;7:77:11:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:194;316:4;336:20;354:1;336:20;:::i;:::-;331:25;;370:20;388:1;370:20;:::i;:::-;365:25;;414:1;411;407:9;399:17;;438:1;432:4;429:11;426:37;;;443:18;;:::i;:::-;426:37;276:194;;;;:::o;94:429:7:-;;;;;;;", "srcmap-runtime": "94:429:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;355:166:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1216:213:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;254:95:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181:8;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;355:166:7:-;409:4;425:26;454:25;:23;:25::i;:::-;425:54;;512:1;496:2;:13;;;;;;;;;;;;:17;;;489:25;;;;:::i;:::-;;415:106;355:166;:::o;1216:213:8:-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;254:95:7:-;316:4;:21;;;338:3;316:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;254:95;:::o;2461:181:8:-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:90::-;1059:7;1102:5;1095:13;1088:21;1077:32;;1025:90;;;:::o;1121:109::-;1202:21;1217:5;1202:21;:::i;:::-;1197:3;1190:34;1121:109;;:::o;1236:210::-;1323:4;1361:2;1350:9;1346:18;1338:26;;1374:65;1436:1;1425:9;1421:17;1412:6;1374:65;:::i;:::-;1236:210;;;;:::o;1452:101::-;1488:7;1528:18;1521:5;1517:30;1506:41;;1452:101;;;:::o;1559:120::-;1631:23;1648:5;1631:23;:::i;:::-;1624:5;1621:34;1611:62;;1669:1;1666;1659:12;1611:62;1559:120;:::o;1685:137::-;1730:5;1768:6;1755:20;1746:29;;1784:32;1810:5;1784:32;:::i;:::-;1685:137;;;;:::o;1828:327::-;1886:6;1935:2;1923:9;1914:7;1910:23;1906:32;1903:119;;;1941:79;;:::i;:::-;1903:119;2061:1;2086:52;2130:7;2121:6;2110:9;2106:22;2086:52;:::i;:::-;2076:62;;2032:116;1828:327;;;;:::o;2161:118::-;2248:24;2266:5;2248:24;:::i;:::-;2243:3;2236:37;2161:118;;:::o;2285:332::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:71;2525:1;2514:9;2510:17;2501:6;2457:71;:::i;:::-;2538:72;2606:2;2595:9;2591:18;2582:6;2538:72;:::i;:::-;2285:332;;;;;:::o;2623:180::-;2671:77;2668:1;2661:88;2768:4;2765:1;2758:15;2792:4;2789:1;2782:15;2809:115;2894:23;2911:5;2894:23;:::i;:::-;2889:3;2882:36;2809:115;;:::o;2930:218::-;3021:4;3059:2;3048:9;3044:18;3036:26;;3072:69;3138:1;3127:9;3123:17;3114:6;3072:69;:::i;:::-;2930:218;;;;:::o;3154:222::-;3247:4;3285:2;3274:9;3270:18;3262:26;;3298:71;3366:1;3355:9;3351:17;3342:6;3298:71;:::i;:::-;3154:222;;;;:::o;3382:180::-;3430:77;3427:1;3420:88;3527:4;3524:1;3517:15;3551:4;3548:1;3541:15;3568:208;3607:4;3627:19;3644:1;3627:19;:::i;:::-;3622:24;;3660:19;3677:1;3660:19;:::i;:::-;3655:24;;3703:1;3700;3696:9;3688:17;;3727:18;3721:4;3718:28;3715:54;;;3749:18;;:::i;:::-;3715:54;3568:208;;;;:::o;3782:126::-;3819:7;3859:42;3852:5;3848:54;3837:65;;3782:126;;;:::o;3914:96::-;3951:7;3980:24;3998:5;3980:24;:::i;:::-;3969:35;;3914:96;;;:::o;4016:118::-;4103:24;4121:5;4103:24;:::i;:::-;4098:3;4091:37;4016:118;;:::o;4140:332::-;4261:4;4299:2;4288:9;4284:18;4276:26;;4312:71;4380:1;4369:9;4365:17;4356:6;4312:71;:::i;:::-;4393:72;4461:2;4450:9;4446:18;4437:6;4393:72;:::i;:::-;4140:332;;;;;:::o;4478:194::-;4518:4;4538:20;4556:1;4538:20;:::i;:::-;4533:25;;4572:20;4590:1;4572:20;:::i;:::-;4567:25;;4616:1;4613;4609:9;4601:17;;4640:1;4634:4;4631:11;4628:37;;;4645:18;;:::i;:::-;4628:37;4478:194;;;;:::o;4678:410::-;4718:7;4741:20;4759:1;4741:20;:::i;:::-;4736:25;;4775:20;4793:1;4775:20;:::i;:::-;4770:25;;4830:1;4827;4823:9;4852:30;4870:11;4852:30;:::i;:::-;4841:41;;5031:1;5022:7;5018:15;5015:1;5012:22;4992:1;4985:9;4965:83;4942:139;;5061:18;;:::i;:::-;4942:139;4726:362;4678:410;;;;:::o;5094:169::-;5178:11;5212:6;5207:3;5200:19;5252:4;5247:3;5243:14;5228:29;;5094:169;;;;:::o;5269:168::-;5409:20;5405:1;5397:6;5393:14;5386:44;5269:168;:::o;5443:366::-;5585:3;5606:67;5670:2;5665:3;5606:67;:::i;:::-;5599:74;;5682:93;5771:3;5682:93;:::i;:::-;5800:2;5795:3;5791:12;5784:19;;5443:366;;;:::o;5815:419::-;5981:4;6019:2;6008:9;6004:18;5996:26;;6068:9;6062:4;6058:20;6054:1;6043:9;6039:17;6032:47;6096:131;6222:4;6096:131;:::i;:::-;6088:139;;5815:419;;;:::o;6240:180::-;6288:77;6285:1;6278:88;6385:4;6382:1;6375:15;6409:4;6406:1;6399:15;6426:185;6466:1;6483:20;6501:1;6483:20;:::i;:::-;6478:25;;6517:20;6535:1;6517:20;:::i;:::-;6512:25;;6556:1;6546:35;;6561:18;;:::i;:::-;6546:35;6603:1;6600;6596:9;6591:14;;6426:185;;;;:::o;6617:275::-;6656:7;6679:19;6696:1;6679:19;:::i;:::-;6674:24;;6712:19;6729:1;6712:19;:::i;:::-;6707:24;;6766:1;6763;6759:9;6788:29;6805:11;6788:29;:::i;:::-;6777:40;;6849:11;6840:7;6837:24;6827:58;;6865:18;;:::i;:::-;6827:58;6664:228;6617:275;;;;:::o;6898:205::-;6937:3;6956:19;6973:1;6956:19;:::i;:::-;6951:24;;6989:19;7006:1;6989:19;:::i;:::-;6984:24;;7031:1;7028;7024:9;7017:16;;7054:18;7049:3;7046:27;7043:53;;;7076:18;;:::i;:::-;7043:53;6898:205;;;;:::o;7109:332::-;7230:4;7268:2;7257:9;7253:18;7245:26;;7281:71;7349:1;7338:9;7334:17;7325:6;7281:71;:::i;:::-;7362:72;7430:2;7419:9;7415:18;7406:6;7362:72;:::i;:::-;7109:332;;;;;:::o;7447:116::-;7517:21;7532:5;7517:21;:::i;:::-;7510:5;7507:32;7497:60;;7553:1;7550;7543:12;7497:60;7447:116;:::o;7569:137::-;7623:5;7654:6;7648:13;7639:22;;7670:30;7694:5;7670:30;:::i;:::-;7569:137;;;;:::o;7712:345::-;7779:6;7828:2;7816:9;7807:7;7803:23;7799:32;7796:119;;;7834:79;;:::i;:::-;7796:119;7954:1;7979:61;8032:7;8023:6;8012:9;8008:22;7979:61;:::i;:::-;7969:71;;7925:125;7712:345;;;;:::o;8063:176::-;8095:1;8112:20;8130:1;8112:20;:::i;:::-;8107:25;;8146:20;8164:1;8146:20;:::i;:::-;8141:25;;8185:1;8175:35;;8190:18;;:::i;:::-;8175:35;8231:1;8228;8224:9;8219:14;;8063:176;;;;:::o;8245:172::-;8385:24;8381:1;8373:6;8369:14;8362:48;8245:172;:::o;8423:366::-;8565:3;8586:67;8650:2;8645:3;8586:67;:::i;:::-;8579:74;;8662:93;8751:3;8662:93;:::i;:::-;8780:2;8775:3;8771:12;8764:19;;8423:366;;;:::o;8795:419::-;8961:4;8999:2;8988:9;8984:18;8976:26;;9048:9;9042:4;9038:20;9034:1;9023:9;9019:17;9012:47;9076:131;9202:4;9076:131;:::i;:::-;9068:139;;8795:419;;;:::o", "abi": "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"check_invariant_networkfee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"check_updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50600061002561005b60201b6106cf1760201c565b9050629896808160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050610104565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c61008e91906100d0565b90508091505090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006100db82610097565b91506100e683610097565b92508282039050818111156100fe576100fd6100a1565b5b92915050565b6110cb80620001146000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b59565b6101bd565b005b6100c7610249565b6040516100d49190610ba1565b60405180910390f35b6100f760048036038101906100f29190610bfc565b61028d565b005b610113600480360381019061010e9190610bfc565b6102f9565b005b61012f600480360381019061012a9190610bfc565b6103b6565b005b61014b60048036038101906101469190610b59565b610422565b005b61016760048036038101906101629190610b59565b610496565b005b610183600480360381019061017e9190610b59565b610589565b005b61019f600480360381019061019a9190610bfc565b6105f7565b005b6101bb60048036038101906101b69190610bfc565b610663565b005b60006101c76106cf565b905060008160000160109054906101000a900467ffffffffffffffff1690506101f9838361070b90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc61022d8267ffffffffffffffff166107a1565b8460405161023c929190610c38565b60405180910390a1505050565b6000806102546106cf565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161161028957610288610c61565b5b5090565b806102966106cf565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102ee9190610c9f565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff16101561034a576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806103536106cf565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103ab9190610c9f565b60405180910390a150565b806103bf6106cf565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104179190610c9f565b60405180910390a150565b61042b816107c3565b6104336106cf565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161048b9190610cba565b60405180910390a150565b60006104a06106cf565b905060006104ad836107c3565b905060006104ba8361083d565b90508067ffffffffffffffff168267ffffffffffffffff16111561050a576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105169190610d04565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061054a33856108d7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161057b929190610d81565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105c29190610cba565b600060405180830381600087803b1580156105dc57600080fd5b505af11580156105f0573d6000803e3d6000fd5b5050505050565b806106006106cf565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106589190610c9f565b60405180910390a150565b8061066c6106cf565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106c49190610c9f565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6107029190610daa565b90508091505090565b610714826109ba565b61071d82610a13565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610773816107c3565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107bc9190610dde565b9050919050565b600062989680680100000000000000006107dd9190610dde565b82111561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610e7d565b60405180910390fd5b6298968061082c83610a88565b6108369190610ecc565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108999190610d04565b6108a39190610efd565b6108ad9190610efd565b8260010160009054906101000a900467ffffffffffffffff166108d09190610f3a565b9050919050565b6108df610ae2565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161093d929190610f76565b6020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190610fcb565b6109b6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109c38161083d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a549190610daa565b610a5e9190610efd565b8260000160189054906101000a900467ffffffffffffffff16610a819190610f3a565b9050919050565b6000806298968083610a9a9190610ff8565b14610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190611075565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b159190610daa565b90508091505090565b600080fd5b6000819050919050565b610b3681610b23565b8114610b4157600080fd5b50565b600081359050610b5381610b2d565b92915050565b600060208284031215610b6f57610b6e610b1e565b5b6000610b7d84828501610b44565b91505092915050565b60008115159050919050565b610b9b81610b86565b82525050565b6000602082019050610bb66000830184610b92565b92915050565b600067ffffffffffffffff82169050919050565b610bd981610bbc565b8114610be457600080fd5b50565b600081359050610bf681610bd0565b92915050565b600060208284031215610c1257610c11610b1e565b5b6000610c2084828501610be7565b91505092915050565b610c3281610b23565b82525050565b6000604082019050610c4d6000830185610c29565b610c5a6020830184610c29565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610c9981610bbc565b82525050565b6000602082019050610cb46000830184610c90565b92915050565b6000602082019050610ccf6000830184610c29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0f82610bbc565b9150610d1a83610bbc565b9250828203905067ffffffffffffffff811115610d3a57610d39610cd5565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d6b82610d40565b9050919050565b610d7b81610d60565b82525050565b6000604082019050610d966000830185610c29565b610da36020830184610d72565b9392505050565b6000610db582610b23565b9150610dc083610b23565b9250828203905081811115610dd857610dd7610cd5565b5b92915050565b6000610de982610b23565b9150610df483610b23565b9250828202610e0281610b23565b91508282048414831517610e1957610e18610cd5565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610e67601283610e20565b9150610e7282610e31565b602082019050919050565b60006020820190508181036000830152610e9681610e5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610ed782610b23565b9150610ee283610b23565b925082610ef257610ef1610e9d565b5b828204905092915050565b6000610f0882610bbc565b9150610f1383610bbc565b9250828202610f2181610bbc565b9150808214610f3357610f32610cd5565b5b5092915050565b6000610f4582610bbc565b9150610f5083610bbc565b9250828201905067ffffffffffffffff811115610f7057610f6f610cd5565b5b92915050565b6000604082019050610f8b6000830185610d72565b610f986020830184610c29565b9392505050565b610fa881610b86565b8114610fb357600080fd5b50565b600081519050610fc581610f9f565b92915050565b600060208284031215610fe157610fe0610b1e565b5b6000610fef84828501610fb6565b91505092915050565b600061100382610b23565b915061100e83610b23565b92508261101e5761101d610e9d565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b600061105f601683610e20565b915061106a82611029565b602082019050919050565b6000602082019050818103600083015261108e81611052565b905091905056fea2646970667358221220236f997959cc621a577f8a3d711d1ad669aa0265264fd41dbc07e8a21ac7494864736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b4c9c40811610066578063b4c9c40814610131578063d22317411461014d578063d7ec4c5f14610169578063e39c674414610185578063eb608022146101a15761009e565b80631f1f9fd5146100a357806323eb9a03146100bf5780633631983f146100dd5780636512447d146100f957806379e3e4e414610115575b600080fd5b6100bd60048036038101906100b89190610b59565b6101bd565b005b6100c7610249565b6040516100d49190610ba1565b60405180910390f35b6100f760048036038101906100f29190610bfc565b61028d565b005b610113600480360381019061010e9190610bfc565b6102f9565b005b61012f600480360381019061012a9190610bfc565b6103b6565b005b61014b60048036038101906101469190610b59565b610422565b005b61016760048036038101906101629190610b59565b610496565b005b610183600480360381019061017e9190610b59565b610589565b005b61019f600480360381019061019a9190610bfc565b6105f7565b005b6101bb60048036038101906101b69190610bfc565b610663565b005b60006101c76106cf565b905060008160000160109054906101000a900467ffffffffffffffff1690506101f9838361070b90919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc61022d8267ffffffffffffffff166107a1565b8460405161023c929190610c38565b60405180910390a1505050565b6000806102546106cf565b905060008160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161161028957610288610c61565b5b5090565b806102966106cf565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a342816040516102ee9190610c9f565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff16101561034a576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806103536106cf565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103ab9190610c9f565b60405180910390a150565b806103bf6106cf565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516104179190610c9f565b60405180910390a150565b61042b816107c3565b6104336106cf565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab059608160405161048b9190610cba565b60405180910390a150565b60006104a06106cf565b905060006104ad836107c3565b905060006104ba8361083d565b90508067ffffffffffffffff168267ffffffffffffffff16111561050a576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816105169190610d04565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061054a33856108d7565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c5843360405161057b929190610d81565b60405180910390a150505050565b3073ffffffffffffffffffffffffffffffffffffffff16631f1f9fd5826040518263ffffffff1660e01b81526004016105c29190610cba565b600060405180830381600087803b1580156105dc57600080fd5b505af11580156105f0573d6000803e3d6000fd5b5050505050565b806106006106cf565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516106589190610c9f565b60405180910390a150565b8061066c6106cf565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516106c49190610c9f565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6107029190610daa565b90508091505090565b610714826109ba565b61071d82610a13565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610773816107c3565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166107bc9190610dde565b9050919050565b600062989680680100000000000000006107dd9190610dde565b82111561081f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081690610e7d565b60405180910390fd5b6298968061082c83610a88565b6108369190610ecc565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436108999190610d04565b6108a39190610efd565b6108ad9190610efd565b8260010160009054906101000a900467ffffffffffffffff166108d09190610f3a565b9050919050565b6108df610ae2565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161093d929190610f76565b6020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190610fcb565b6109b6576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6109c38161083d565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff1643610a549190610daa565b610a5e9190610efd565b8260000160189054906101000a900467ffffffffffffffff16610a819190610f3a565b9050919050565b6000806298968083610a9a9190610ff8565b14610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190611075565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610b159190610daa565b90508091505090565b600080fd5b6000819050919050565b610b3681610b23565b8114610b4157600080fd5b50565b600081359050610b5381610b2d565b92915050565b600060208284031215610b6f57610b6e610b1e565b5b6000610b7d84828501610b44565b91505092915050565b60008115159050919050565b610b9b81610b86565b82525050565b6000602082019050610bb66000830184610b92565b92915050565b600067ffffffffffffffff82169050919050565b610bd981610bbc565b8114610be457600080fd5b50565b600081359050610bf681610bd0565b92915050565b600060208284031215610c1257610c11610b1e565b5b6000610c2084828501610be7565b91505092915050565b610c3281610b23565b82525050565b6000604082019050610c4d6000830185610c29565b610c5a6020830184610c29565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610c9981610bbc565b82525050565b6000602082019050610cb46000830184610c90565b92915050565b6000602082019050610ccf6000830184610c29565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d0f82610bbc565b9150610d1a83610bbc565b9250828203905067ffffffffffffffff811115610d3a57610d39610cd5565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d6b82610d40565b9050919050565b610d7b81610d60565b82525050565b6000604082019050610d966000830185610c29565b610da36020830184610d72565b9392505050565b6000610db582610b23565b9150610dc083610b23565b9250828203905081811115610dd857610dd7610cd5565b5b92915050565b6000610de982610b23565b9150610df483610b23565b9250828202610e0281610b23565b91508282048414831517610e1957610e18610cd5565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610e67601283610e20565b9150610e7282610e31565b602082019050919050565b60006020820190508181036000830152610e9681610e5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610ed782610b23565b9150610ee283610b23565b925082610ef257610ef1610e9d565b5b828204905092915050565b6000610f0882610bbc565b9150610f1383610bbc565b9250828202610f2181610bbc565b9150808214610f3357610f32610cd5565b5b5092915050565b6000610f4582610bbc565b9150610f5083610bbc565b9250828201905067ffffffffffffffff811115610f7057610f6f610cd5565b5b92915050565b6000604082019050610f8b6000830185610d72565b610f986020830184610c29565b9392505050565b610fa881610b86565b8114610fb357600080fd5b50565b600081519050610fc581610f9f565b92915050565b600060208284031215610fe157610fe0610b1e565b5b6000610fef84828501610fb6565b91505092915050565b600061100382610b23565b915061100e83610b23565b92508261101e5761101d610e9d565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b600061105f601683610e20565b915061106a82611029565b602082019050919050565b6000602082019050818103600083015261108e81611052565b905091905056fea2646970667358221220236f997959cc621a577f8a3d711d1ad669aa0265264fd41dbc07e8a21ac7494864736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/contracts/modules/SSVDAO.sol:SSVDAO": {"srcmap": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "214:2430:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1216:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1895:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1435:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2230:225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;696:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2461:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1665:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;424:266;491:26;520:25;:23;:25::i;:::-;491:54;;555:18;576:2;:13;;;;;;;;;;;;555:34;;600:24;620:3;600:2;:19;;:24;;;;:::i;:::-;639:44;657:20;:11;:18;;;:20::i;:::-;679:3;639:44;;;;;;;:::i;:::-;;;;;;;;481:209;;424:266;:::o;1216:213::-;1354:10;1303:25;:23;:25::i;:::-;:48;;;:61;;;;;;;;;;;;;;;;;;1379:43;1411:10;1379:43;;;;;;:::i;:::-;;;;;;;;1216:213;:::o;1895:329::-;410:7;1984:38;;:6;:38;;;1980:106;;;2045:30;;;;;;;;;;;;;;1980:106;2155:6;2096:25;:23;:25::i;:::-;:56;;;:65;;;;;;;;;;;;;;;;;;2176:41;2210:6;2176:41;;;;;;:::i;:::-;;;;;;;;1895:329;:::o;1435:224::-;1578:13;1525:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1606:46;1638:13;1606:46;;;;;;:::i;:::-;;;;;;;;1435:224;:::o;2230:225::-;2375:15;:6;:13;:15::i;:::-;2318:25;:23;:25::i;:::-;:54;;;:72;;;;;;;;;;;;;;;;;;2405:43;2441:6;2405:43;;;;;;:::i;:::-;;;;;;;;2230:225;:::o;696:514::-;773:26;802:25;:23;:25::i;:::-;773:54;;838:19;860:15;:6;:13;:15::i;:::-;838:37;;886:21;910:25;:2;:23;:25::i;:::-;886:49;;965:14;950:29;;:12;:29;;;946:88;;;1002:21;;;;;;;;;;;;;;946:88;1077:12;1060:14;:29;;;;:::i;:::-;1044:2;:13;;;:45;;;;;;;;;;;;;;;;;;1100:43;1124:10;1136:6;1100:23;:43::i;:::-;1159:44;1184:6;1192:10;1159:44;;;;;;;:::i;:::-;;;;;;;;763:447;;;696:514;:::o;2461:181::-;2581:6;2538:25;:23;:25::i;:::-;:40;;;:49;;;;;;;;;;;;;;;;;;2602:33;2628:6;2602:33;;;;;;:::i;:::-;;;;;;;;2461:181;:::o;1665:224::-;1808:13;1755:25;:23;:25::i;:::-;:50;;;:66;;;;;;;;;;;;;;;;;;1836:46;1868:13;1836:46;;;;;;:::i;:::-;;;;;;;;1665:224;:::o;1672:184:5:-;1711:26;1749:16;1664:1;1619:41;1611:50;;:54;;;;:::i;:::-;1749:39;;1832:8;1821:19;;1807:43;1672:184;:::o;552:272:3:-;638:21;656:2;638:17;:21::i;:::-;691:26;714:2;691:22;:26::i;:::-;670:2;:18;;;:47;;;;;;;;;;;;;;;;;;766:12;727:2;:29;;;:52;;;;;;;;;;;;;;;;;;805:12;:3;:10;:12::i;:::-;789:2;:13;;;:28;;;;;;;;;;;;;;;;;;552:272;;:::o;140:109:6:-;193:7;105:10;219:5;:23;;;;;;:::i;:::-;212:30;;140:109;;;:::o;276:206::-;330:6;105:10;366:7;:25;;;;:::i;:::-;356:5;:36;;348:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;105:10;439:17;450:5;439:10;:17::i;:::-;:35;;;;:::i;:::-;425:50;;276:206;;;:::o;1111:215:3:-;1192:6;1299:2;:20;;;;;;;;;;;;1233:86;;1283:2;:13;;;;;;;;;;;;1257:2;:22;;;;;;;;;;;;1234:45;;1241:12;1234:45;;;;:::i;:::-;1233:63;;;;:::i;:::-;:86;;;;:::i;:::-;1217:2;:13;;;;;;;;;;;;:102;;;;:::i;:::-;1210:109;;1111:215;;;:::o;301:198:2:-;378:17;:15;:17::i;:::-;:23;;;;;;;;;;;;:32;;;411:2;415:6;378:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;373:120;;445:37;;;;;;;;;;;;;;373:120;301:198;;:::o;929:176:3:-;1019:24;1040:2;1019:20;:24::i;:::-;1003:2;:13;;;:40;;;;;;;;;;;;;;;;;;1085:12;1053:2;:22;;;:45;;;;;;;;;;;;;;;;;;929:176;:::o;342:204::-;425:6;526:2;:13;;;;;;;;;;;;493:2;:29;;;;;;;;;;;;478:44;;:12;:44;;;;:::i;:::-;471:68;;;;:::i;:::-;450:2;:18;;;;;;;;;;;;:89;;;;:::i;:::-;443:96;;342:204;;;:::o;488:169:6:-;546:7;600:1;105:10;573:5;:23;;;;:::i;:::-;:28;565:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;645:5;638:12;;488:169;;;:::o;1852:180:4:-;1891:22;1925:16;1844:1;1803:37;1795:46;;:50;;;;:::i;:::-;1925:39;;2008:8;1997:19;;1983:43;1852:180;:::o;88:117:11:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:101::-;1061:7;1101:18;1094:5;1090:30;1079:41;;1025:101;;;:::o;1132:120::-;1204:23;1221:5;1204:23;:::i;:::-;1197:5;1194:34;1184:62;;1242:1;1239;1232:12;1184:62;1132:120;:::o;1258:137::-;1303:5;1341:6;1328:20;1319:29;;1357:32;1383:5;1357:32;:::i;:::-;1258:137;;;;:::o;1401:327::-;1459:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:119;;;1514:79;;:::i;:::-;1476:119;1634:1;1659:52;1703:7;1694:6;1683:9;1679:22;1659:52;:::i;:::-;1649:62;;1605:116;1401:327;;;;:::o;1734:118::-;1821:24;1839:5;1821:24;:::i;:::-;1816:3;1809:37;1734:118;;:::o;1858:332::-;1979:4;2017:2;2006:9;2002:18;1994:26;;2030:71;2098:1;2087:9;2083:17;2074:6;2030:71;:::i;:::-;2111:72;2179:2;2168:9;2164:18;2155:6;2111:72;:::i;:::-;1858:332;;;;;:::o;2196:115::-;2281:23;2298:5;2281:23;:::i;:::-;2276:3;2269:36;2196:115;;:::o;2317:218::-;2408:4;2446:2;2435:9;2431:18;2423:26;;2459:69;2525:1;2514:9;2510:17;2501:6;2459:69;:::i;:::-;2317:218;;;;:::o;2541:222::-;2634:4;2672:2;2661:9;2657:18;2649:26;;2685:71;2753:1;2742:9;2738:17;2729:6;2685:71;:::i;:::-;2541:222;;;;:::o;2769:180::-;2817:77;2814:1;2807:88;2914:4;2911:1;2904:15;2938:4;2935:1;2928:15;2955:208;2994:4;3014:19;3031:1;3014:19;:::i;:::-;3009:24;;3047:19;3064:1;3047:19;:::i;:::-;3042:24;;3090:1;3087;3083:9;3075:17;;3114:18;3108:4;3105:28;3102:54;;;3136:18;;:::i;:::-;3102:54;2955:208;;;;:::o;3169:126::-;3206:7;3246:42;3239:5;3235:54;3224:65;;3169:126;;;:::o;3301:96::-;3338:7;3367:24;3385:5;3367:24;:::i;:::-;3356:35;;3301:96;;;:::o;3403:118::-;3490:24;3508:5;3490:24;:::i;:::-;3485:3;3478:37;3403:118;;:::o;3527:332::-;3648:4;3686:2;3675:9;3671:18;3663:26;;3699:71;3767:1;3756:9;3752:17;3743:6;3699:71;:::i;:::-;3780:72;3848:2;3837:9;3833:18;3824:6;3780:72;:::i;:::-;3527:332;;;;;:::o;3865:194::-;3905:4;3925:20;3943:1;3925:20;:::i;:::-;3920:25;;3959:20;3977:1;3959:20;:::i;:::-;3954:25;;4003:1;4000;3996:9;3988:17;;4027:1;4021:4;4018:11;4015:37;;;4032:18;;:::i;:::-;4015:37;3865:194;;;;:::o;4065:410::-;4105:7;4128:20;4146:1;4128:20;:::i;:::-;4123:25;;4162:20;4180:1;4162:20;:::i;:::-;4157:25;;4217:1;4214;4210:9;4239:30;4257:11;4239:30;:::i;:::-;4228:41;;4418:1;4409:7;4405:15;4402:1;4399:22;4379:1;4372:9;4352:83;4329:139;;4448:18;;:::i;:::-;4329:139;4113:362;4065:410;;;;:::o;4481:169::-;4565:11;4599:6;4594:3;4587:19;4639:4;4634:3;4630:14;4615:29;;4481:169;;;;:::o;4656:168::-;4796:20;4792:1;4784:6;4780:14;4773:44;4656:168;:::o;4830:366::-;4972:3;4993:67;5057:2;5052:3;4993:67;:::i;:::-;4986:74;;5069:93;5158:3;5069:93;:::i;:::-;5187:2;5182:3;5178:12;5171:19;;4830:366;;;:::o;5202:419::-;5368:4;5406:2;5395:9;5391:18;5383:26;;5455:9;5449:4;5445:20;5441:1;5430:9;5426:17;5419:47;5483:131;5609:4;5483:131;:::i;:::-;5475:139;;5202:419;;;:::o;5627:180::-;5675:77;5672:1;5665:88;5772:4;5769:1;5762:15;5796:4;5793:1;5786:15;5813:185;5853:1;5870:20;5888:1;5870:20;:::i;:::-;5865:25;;5904:20;5922:1;5904:20;:::i;:::-;5899:25;;5943:1;5933:35;;5948:18;;:::i;:::-;5933:35;5990:1;5987;5983:9;5978:14;;5813:185;;;;:::o;6004:275::-;6043:7;6066:19;6083:1;6066:19;:::i;:::-;6061:24;;6099:19;6116:1;6099:19;:::i;:::-;6094:24;;6153:1;6150;6146:9;6175:29;6192:11;6175:29;:::i;:::-;6164:40;;6236:11;6227:7;6224:24;6214:58;;6252:18;;:::i;:::-;6214:58;6051:228;6004:275;;;;:::o;6285:205::-;6324:3;6343:19;6360:1;6343:19;:::i;:::-;6338:24;;6376:19;6393:1;6376:19;:::i;:::-;6371:24;;6418:1;6415;6411:9;6404:16;;6441:18;6436:3;6433:27;6430:53;;;6463:18;;:::i;:::-;6430:53;6285:205;;;;:::o;6496:332::-;6617:4;6655:2;6644:9;6640:18;6632:26;;6668:71;6736:1;6725:9;6721:17;6712:6;6668:71;:::i;:::-;6749:72;6817:2;6806:9;6802:18;6793:6;6749:72;:::i;:::-;6496:332;;;;;:::o;6834:90::-;6868:7;6911:5;6904:13;6897:21;6886:32;;6834:90;;;:::o;6930:116::-;7000:21;7015:5;7000:21;:::i;:::-;6993:5;6990:32;6980:60;;7036:1;7033;7026:12;6980:60;6930:116;:::o;7052:137::-;7106:5;7137:6;7131:13;7122:22;;7153:30;7177:5;7153:30;:::i;:::-;7052:137;;;;:::o;7195:345::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:61;7515:7;7506:6;7495:9;7491:22;7462:61;:::i;:::-;7452:71;;7408:125;7195:345;;;;:::o;7546:176::-;7578:1;7595:20;7613:1;7595:20;:::i;:::-;7590:25;;7629:20;7647:1;7629:20;:::i;:::-;7624:25;;7668:1;7658:35;;7673:18;;:::i;:::-;7658:35;7714:1;7711;7707:9;7702:14;;7546:176;;;;:::o;7728:172::-;7868:24;7864:1;7856:6;7852:14;7845:48;7728:172;:::o;7906:366::-;8048:3;8069:67;8133:2;8128:3;8069:67;:::i;:::-;8062:74;;8145:93;8234:3;8145:93;:::i;:::-;8263:2;8258:3;8254:12;8247:19;;7906:366;;;:::o;8278:419::-;8444:4;8482:2;8471:9;8467:18;8459:26;;8531:9;8525:4;8521:20;8517:1;8506:9;8502:17;8495:47;8559:131;8685:4;8559:131;:::i;:::-;8551:139;;8278:419;;;:::o", "abi": "[{\"inputs\":[],\"name\":\"ApprovalNotWithinTimeframe\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterAlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterIsLiquidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClusterNotLiquidatable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedValidatorLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeExceedsIncreaseLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeIncreaseNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectClusterState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectValidatorState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdsLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPublicKeyLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValueExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewBlockPeriodIsBelowMinimum\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoFeeDeclared\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorsListNotUnique\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameFeeChangeNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TargetModuleDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsortedOperatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"DeclareOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"ExecuteOperatorFeePeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"LiquidationThresholdPeriodUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquidationCollateralUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"NetworkEarningsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"NetworkFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"}],\"name\":\"OperatorFeeIncreaseLimitUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"OperatorMaximumFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateDeclareOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeInSeconds\",\"type\":\"uint64\"}],\"name\":\"updateExecuteOperatorFeePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blocks\",\"type\":\"uint64\"}],\"name\":\"updateLiquidationThresholdPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxFee\",\"type\":\"uint64\"}],\"name\":\"updateMaximumOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateMinimumLiquidationCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"updateNetworkFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"percentage\",\"type\":\"uint64\"}],\"name\":\"updateOperatorFeeIncreaseLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNetworkEarnings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "608060405234801561001057600080fd5b50610f70806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4c9c4081161005b578063b4c9c408146100fd578063d223174114610119578063e39c674414610135578063eb6080221461015157610088565b80631f1f9fd51461008d5780633631983f146100a95780636512447d146100c557806379e3e4e4146100e1575b600080fd5b6100a760048036038101906100a29190610a57565b61016d565b005b6100c360048036038101906100be9190610ac4565b6101f9565b005b6100df60048036038101906100da9190610ac4565b610265565b005b6100fb60048036038101906100f69190610ac4565b610322565b005b61011760048036038101906101129190610a57565b61038e565b005b610133600480360381019061012e9190610a57565b610402565b005b61014f600480360381019061014a9190610ac4565b6104f5565b005b61016b60048036038101906101669190610ac4565b610561565b005b60006101776105cd565b905060008160000160109054906101000a900467ffffffffffffffff1690506101a9838361060990919063ffffffff16565b7f8f49a76c5d617bd72673d92d3a019ff8f04f204536aae7a3d10e7ca85603f3cc6101dd8267ffffffffffffffff1661069f565b846040516101ec929190610b00565b60405180910390a1505050565b806102026105cd565b60020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f2fff7e5a48a4befc2c2be4d77e141f6d97907798977ce452429ec55c2658a3428160405161025a9190610b38565b60405180910390a150565b620189c067ffffffffffffffff168167ffffffffffffffff1610156102b6576040517f6e6c9cac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806102bf6105cd565b60010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f42af14411036d7a50e5e92daf825781450fc8fac8fb65cbdb04720ff08efb84f816040516103179190610b38565b60405180910390a150565b8061032b6105cd565b60010160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f5fbd75d987b37490f91aa1909db948e7ff14c6ffb495b2f8e0b2334da9b192f1816040516103839190610b38565b60405180910390a150565b610397816106c1565b61039f6105cd565b60010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fd363ab4392efaf967a89d8616cba1ff0c6f05a04c2f214671be365f0fab05960816040516103f79190610b53565b60405180910390a150565b600061040c6105cd565b90506000610419836106c1565b905060006104268361073b565b90508067ffffffffffffffff168267ffffffffffffffff161115610476576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816104829190610b9d565b8360010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506104b633856107d5565b7f370342c3bb9245e20bffe6dced02ba2fceca979701f881d5adc72d838e83f1c584336040516104e7929190610c1a565b60405180910390a150505050565b806104fe6105cd565b60020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f38552bed8df52ac76c5de6da688eafcda7d7b070f6c987f391a07dd69986d783816040516105569190610b38565b60405180910390a150565b8061056a6105cd565b60020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff6b8a2b45d0a60381de51a7b980c4660d9e5b82db6e07a4d342bfc17a6ff96bf816040516105c29190610b38565b60405180910390a150565b60008060017f0f1d85405047bdb6b0a60e27531f52a1f7a948613527b9b83a7552558207aa1660001c6106009190610c43565b90508091505090565b610612826108b8565b61061b82610911565b8260000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438260000160006101000a81548163ffffffff021916908363ffffffff160217905550610671816106c1565b8260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b6000629896808267ffffffffffffffff166106ba9190610c77565b9050919050565b600062989680680100000000000000006106db9190610c77565b82111561071d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071490610d16565b60405180910390fd5b6298968061072a83610986565b6107349190610d65565b9050919050565b60008160000160049054906101000a900463ffffffff1663ffffffff168260000160109054906101000a900467ffffffffffffffff168360000160089054906101000a900463ffffffff1663ffffffff16436107979190610b9d565b6107a19190610d96565b6107ab9190610d96565b8260010160009054906101000a900467ffffffffffffffff166107ce9190610dd3565b9050919050565b6107dd6109e0565b60070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161083b929190610e0f565b6020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e9190610e70565b6108b4576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6108c18161073b565b8160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550438160000160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60008160000160109054906101000a900467ffffffffffffffff168260000160009054906101000a900463ffffffff1663ffffffff16436109529190610c43565b61095c9190610d96565b8260000160189054906101000a900467ffffffffffffffff1661097f9190610dd3565b9050919050565b60008062989680836109989190610e9d565b146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90610f1a565b60405180910390fd5b819050919050565b60008060017fd56c4f4aab8ca22f9fde432777379f436593c6027698a6995e2daea890bed10560001c610a139190610c43565b90508091505090565b600080fd5b6000819050919050565b610a3481610a21565b8114610a3f57600080fd5b50565b600081359050610a5181610a2b565b92915050565b600060208284031215610a6d57610a6c610a1c565b5b6000610a7b84828501610a42565b91505092915050565b600067ffffffffffffffff82169050919050565b610aa181610a84565b8114610aac57600080fd5b50565b600081359050610abe81610a98565b92915050565b600060208284031215610ada57610ad9610a1c565b5b6000610ae884828501610aaf565b91505092915050565b610afa81610a21565b82525050565b6000604082019050610b156000830185610af1565b610b226020830184610af1565b9392505050565b610b3281610a84565b82525050565b6000602082019050610b4d6000830184610b29565b92915050565b6000602082019050610b686000830184610af1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ba882610a84565b9150610bb383610a84565b9250828203905067ffffffffffffffff811115610bd357610bd2610b6e565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c0482610bd9565b9050919050565b610c1481610bf9565b82525050565b6000604082019050610c2f6000830185610af1565b610c3c6020830184610c0b565b9392505050565b6000610c4e82610a21565b9150610c5983610a21565b9250828203905081811115610c7157610c70610b6e565b5b92915050565b6000610c8282610a21565b9150610c8d83610a21565b9250828202610c9b81610a21565b91508282048414831517610cb257610cb1610b6e565b5b5092915050565b600082825260208201905092915050565b7f4d61782076616c75652065786365656465640000000000000000000000000000600082015250565b6000610d00601283610cb9565b9150610d0b82610cca565b602082019050919050565b60006020820190508181036000830152610d2f81610cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610d7082610a21565b9150610d7b83610a21565b925082610d8b57610d8a610d36565b5b828204905092915050565b6000610da182610a84565b9150610dac83610a84565b9250828202610dba81610a84565b9150808214610dcc57610dcb610b6e565b5b5092915050565b6000610dde82610a84565b9150610de983610a84565b9250828201905067ffffffffffffffff811115610e0957610e08610b6e565b5b92915050565b6000604082019050610e246000830185610c0b565b610e316020830184610af1565b9392505050565b60008115159050919050565b610e4d81610e38565b8114610e5857600080fd5b50565b600081519050610e6a81610e44565b92915050565b600060208284031215610e8657610e85610a1c565b5b6000610e9484828501610e5b565b91505092915050565b6000610ea882610a21565b9150610eb383610a21565b925082610ec357610ec2610d36565b5b828206905092915050565b7f4d617820707265636973696f6e20657863656564656400000000000000000000600082015250565b6000610f04601683610cb9565b9150610f0f82610ece565b602082019050919050565b60006020820190508181036000830152610f3381610ef7565b905091905056fea2646970667358221220f400aa4105011ec146cab976b24562bf78a984aafa35c0495ddb8ff44d37dc0664736f6c63430008120033", "userdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"notice": "Updates the period for declaring operator fees"}, "updateExecuteOperatorFeePeriod(uint64)": {"notice": "Updates the period for executing operator fees"}, "updateLiquidationThresholdPeriod(uint64)": {"notice": "Updates the liquidation threshold period"}, "updateMaximumOperatorFee(uint64)": {"notice": "Updates the maximum fee an operator that uses SSV token can set"}, "updateMinimumLiquidationCollateral(uint256)": {"notice": "Updates the minimum collateral required to prevent liquidation"}, "updateNetworkFee(uint256)": {"notice": "Updates the network fee"}, "updateOperatorFeeIncreaseLimit(uint64)": {"notice": "Updates the limit on the percentage increase in operator fees"}, "withdrawNetworkEarnings(uint256)": {"notice": "Withdraws network earnings"}}, "notice": null}, "devdoc": {"methods": {"updateDeclareOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateExecuteOperatorFeePeriod(uint64)": {"author": null, "details": null, "params": {"timeInSeconds": "The new period in seconds"}, "return": null}, "updateLiquidationThresholdPeriod(uint64)": {"author": null, "details": null, "params": {"blocks": "The new liquidation threshold in blocks"}, "return": null}, "updateMaximumOperatorFee(uint64)": {"author": null, "details": null, "params": {"maxFee": "The new maximum fee (SSV)"}, "return": null}, "updateMinimumLiquidationCollateral(uint256)": {"author": null, "details": null, "params": {"amount": "The new minimum collateral amount (SSV)"}, "return": null}, "updateNetworkFee(uint256)": {"author": null, "details": null, "params": {"fee": "The new network fee (SSV) to be set"}, "return": null}, "updateOperatorFeeIncreaseLimit(uint64)": {"author": null, "details": null, "params": {"percentage": "The new percentage limit"}, "return": null}, "withdrawNetworkEarnings(uint256)": {"author": null, "details": null, "params": {"amount": "The amount (SSV) to be withdrawn"}, "return": null}}, "author": null, "details": null, "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": {"srcmap": "", "srcmap-runtime": "", "abi": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", "bin": "", "bin-runtime": "", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {"allowance(address,address)": {"author": null, "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.", "params": {}, "return": null}, "approve(address,uint256)": {"author": null, "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.", "params": {}, "return": null}, "balanceOf(address)": {"author": null, "details": "Returns the amount of tokens owned by `account`.", "params": {}, "return": null}, "totalSupply()": {"author": null, "details": "Returns the amount of tokens in existence.", "params": {}, "return": null}, "transfer(address,uint256)": {"author": null, "details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}, "transferFrom(address,address,uint256)": {"author": null, "details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.", "params": {}, "return": null}}, "author": null, "details": "Interface of the ERC20 standard as defined in the EIP.", "title": null}, "libraries": {}}, "/Users/macbook/Songark/SSV.Network/Work/ssv-network/node_modules/@openzeppelin/contracts/utils/Counters.sol:Counters": {"srcmap": "424:971:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "srcmap-runtime": "424:971:10:-:0;;;;;;;;", "abi": "[]", "bin": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204c79d7dbee639880588faabfd22ec67cc1f087b848dd90d62853c99f09e8fabf64736f6c63430008120033", "userdoc": {"methods": {}, "notice": null}, "devdoc": {"methods": {}, "author": "Matt Condon (@shrugs)", "details": "Provides counters that can only be incremented, decremented or reset. 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;`", "title": "Counters"}, "libraries": {}}}} \ No newline at end of file diff --git a/echidna.yaml b/echidna.yaml index f3cee3f2..40e739b4 100644 --- a/echidna.yaml +++ b/echidna.yaml @@ -1,10 +1,8 @@ testMode: assertion -testLimit: 2000 +testLimit: 5000 corpusDir: 'echidna-corpus' cryticArgs: ['--solc-remaps', '@openzeppelin=node_modules/@openzeppelin'] format: text -prefix: 'echidna_' # contractAddr: '0xContractAddress' # filterBlacklist: false -# filterFunctions: ["Operators.registerOperator(bytes,uint256)", "setOperatorWhitelist(uint64,address)"]