diff --git a/.eslintrc.js b/.eslintrc.js index 7e1a3647f..c3c2fae8c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -6,7 +6,7 @@ module.exports = { extends: ['airbnb/base', 'prettier'], parserOptions: { sourceType: 'module', - ecmaVersion: 2017, + ecmaVersion: 2021, }, rules: { 'linebreak-style': ['error', 'unix'], @@ -19,4 +19,12 @@ module.exports = { 'no-continue': 1, 'no-underscore-dangle': 0, }, + "overrides": [ + { + "files": ["*.test.js", "*.spec.js"], + "rules": { + "no-unused-expressions": "off" + } + } + ] }; diff --git a/.gitignore b/.gitignore index 3fce756f4..493ced682 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ # Logs -logs *.log npm-debug.log* yarn-debug.log* @@ -108,4 +107,5 @@ dist .DS_Store -data +data* +.vscode/launch.json diff --git a/.husky/pre-commit b/.husky/pre-commit index eb0b00061..57757f4ed 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -#npm run lint-staged +npm run lint-staged diff --git a/.origintrail_noderc_example b/.origintrail_noderc_example deleted file mode 100644 index 0c855bc79..000000000 --- a/.origintrail_noderc_example +++ /dev/null @@ -1,26 +0,0 @@ -{ - "blockchain": [ - { - "blockchainTitle": "Polygon", - "networkId": "polygon::testnet", - "rpcEndpoints": [ - "https://rpc-mumbai.maticvigil.com/", - "https://matic-mumbai.chainstacklabs.com", - "https://rpc-mumbai.matic.today", - ], - "publicKey": "...", - "privateKey": "..." - } - ], - "graphDatabase": { - "username": "admin", - "password": "" - }, - "logLevel": "trace", - "rpcPort": 8900, - "network": {}, - "ipWhitelist": [ - "::1", - "127.0.0.1" - ] -} diff --git a/build/contracts/Context.json b/build/contracts/Context.json deleted file mode 100644 index c81357294..000000000 --- a/build/contracts/Context.json +++ /dev/null @@ -1,596 +0,0 @@ -{ - "contractName": "Context", - "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.6.10+commit.00c0fcaf\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}", - "bytecode": "0x", - "deployedBytecode": "0x", - "immutableReferences": {}, - "sourceMap": "", - "deployedSourceMap": "", - "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address payable) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes memory) {\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n return msg.data;\n }\n}\n", - "sourcePath": "openzeppelin-solidity/contracts/utils/Context.sol", - "ast": { - "absolutePath": "openzeppelin-solidity/contracts/utils/Context.sol", - "exportedSymbols": { - "Context": [ - 565 - ] - }, - "id": 566, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 544, - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "33:31:3" - }, - { - "abstract": true, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 565, - "linearizedBaseContracts": [ - 565 - ], - "name": "Context", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 552, - "nodeType": "Block", - "src": "668:34:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 549, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "685:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "685:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "functionReturnParameters": 548, - "id": 551, - "nodeType": "Return", - "src": "678:17:3" - } - ] - }, - "documentation": null, - "id": 553, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_msgSender", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 545, - "nodeType": "ParameterList", - "parameters": [], - "src": "617:2:3" - }, - "returnParameters": { - "id": 548, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 547, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 553, - "src": "651:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "651:15:3", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "650:17:3" - }, - "scope": 565, - "src": "598:104:3", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 563, - "nodeType": "Block", - "src": "773:165:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 558, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "783:4:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$565", - "typeString": "contract Context" - } - }, - "id": 559, - "nodeType": "ExpressionStatement", - "src": "783:4:3" - }, - { - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 560, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "923:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 561, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "923:8:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "functionReturnParameters": 557, - "id": 562, - "nodeType": "Return", - "src": "916:15:3" - } - ] - }, - "documentation": null, - "id": 564, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_msgData", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 554, - "nodeType": "ParameterList", - "parameters": [], - "src": "725:2:3" - }, - "returnParameters": { - "id": 557, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 556, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 564, - "src": "759:12:3", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 555, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "759:5:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "758:14:3" - }, - "scope": 565, - "src": "708:230:3", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - } - ], - "scope": 566, - "src": "566:374:3" - } - ], - "src": "33:908:3" - }, - "legacyAST": { - "attributes": { - "absolutePath": "openzeppelin-solidity/contracts/utils/Context.sol", - "exportedSymbols": { - "Context": [ - 565 - ] - }, - "license": "MIT" - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ] - }, - "id": 544, - "name": "PragmaDirective", - "src": "33:31:3" - }, - { - "attributes": { - "abstract": true, - "baseContracts": [ - null - ], - "contractDependencies": [ - null - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 565 - ], - "name": "Context", - "scope": 566 - }, - "children": [ - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_msgSender", - "overrides": null, - "scope": 565, - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 545, - "name": "ParameterList", - "src": "617:2:3" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 553, - "stateVariable": false, - "storageLocation": "default", - "type": "address payable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 546, - "name": "ElementaryTypeName", - "src": "651:15:3" - } - ], - "id": 547, - "name": "VariableDeclaration", - "src": "651:15:3" - } - ], - "id": 548, - "name": "ParameterList", - "src": "650:17:3" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 548 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 549, - "name": "Identifier", - "src": "685:3:3" - } - ], - "id": 550, - "name": "MemberAccess", - "src": "685:10:3" - } - ], - "id": 551, - "name": "Return", - "src": "678:17:3" - } - ], - "id": 552, - "name": "Block", - "src": "668:34:3" - } - ], - "id": 553, - "name": "FunctionDefinition", - "src": "598:104:3" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_msgData", - "overrides": null, - "scope": 565, - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 554, - "name": "ParameterList", - "src": "725:2:3" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 564, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 555, - "name": "ElementaryTypeName", - "src": "759:5:3" - } - ], - "id": 556, - "name": "VariableDeclaration", - "src": "759:12:3" - } - ], - "id": 557, - "name": "ParameterList", - "src": "758:14:3" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -28, - "type": "contract Context", - "value": "this" - }, - "id": 558, - "name": "Identifier", - "src": "783:4:3" - } - ], - "id": 559, - "name": "ExpressionStatement", - "src": "783:4:3" - }, - { - "attributes": { - "functionReturnParameters": 557 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "data", - "referencedDeclaration": null, - "type": "bytes calldata" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 560, - "name": "Identifier", - "src": "923:3:3" - } - ], - "id": 561, - "name": "MemberAccess", - "src": "923:8:3" - } - ], - "id": 562, - "name": "Return", - "src": "916:15:3" - } - ], - "id": 563, - "name": "Block", - "src": "773:165:3" - } - ], - "id": 564, - "name": "FunctionDefinition", - "src": "708:230:3" - } - ], - "id": 565, - "name": "ContractDefinition", - "src": "566:374:3" - } - ], - "id": 566, - "name": "SourceUnit", - "src": "33:908:3" - }, - "compiler": { - "name": "solc", - "version": "0.6.10+commit.00c0fcaf.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "3.4.3", - "updatedAt": "2021-10-13T15:44:47.630Z", - "devdoc": { - "methods": {} - }, - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/build/contracts/DKGcontract.json b/build/contracts/DKGcontract.json deleted file mode 100644 index 78a927e6a..000000000 --- a/build/contracts/DKGcontract.json +++ /dev/null @@ -1,9124 +0,0 @@ -{ - "contractName": "DKGcontract", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "token_address", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "rootHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "assertionIssuer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "numberOfEpochs", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "assertionTimeToLive", - "type": "uint256" - } - ], - "name": "AssertionCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - } - ], - "name": "TokenAddressSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "prover", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "epoch", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "TokensCollected", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "prover", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "epoch", - "type": "uint256" - } - ], - "name": "VerificationFailed", - "type": "event" - }, - { - "inputs": [], - "name": "TRAC_TOKEN_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "rootHash", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "issuer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "numberOfEpochs", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "assertionTimeToLive", - "type": "uint256" - } - ], - "name": "createAssertionRecord", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "epochAssertionProof", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "epochNumber", - "type": "uint256" - } - ], - "name": "submitHoldingProof", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "epochAssertionProof", - "type": "bytes32" - } - ], - "name": "verifyAssertionProof", - "outputs": [ - { - "internalType": "bool", - "name": "proofValid", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - } - ], - "name": "getAssertionIssuer", - "outputs": [ - { - "internalType": "address", - "name": "creator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - } - ], - "name": "getAssertionRootHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "rootHash", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - } - ], - "name": "getAssertionTimeToLive", - "outputs": [ - { - "internalType": "uint256", - "name": "timeToLive", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - } - ], - "name": "getAssertionNumberOfEpochs", - "outputs": [ - { - "internalType": "uint256", - "name": "numberOfEpochs", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "epoch", - "type": "uint256" - } - ], - "name": "getAssertionTask", - "outputs": [ - { - "internalType": "uint256", - "name": "task", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assertionIssuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numberOfEpochs\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assertionTimeToLive\",\"type\":\"uint256\"}],\"name\":\"AssertionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"VerificationFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TRAC_TOKEN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"numberOfEpochs\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assertionTimeToLive\",\"type\":\"uint256\"}],\"name\":\"createAssertionRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"}],\"name\":\"getAssertionIssuer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"}],\"name\":\"getAssertionNumberOfEpochs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"numberOfEpochs\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"}],\"name\":\"getAssertionRootHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"getAssertionTask\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"task\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"}],\"name\":\"getAssertionTimeToLive\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timeToLive\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"epochAssertionProof\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"}],\"name\":\"submitHoldingProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assertionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"epochAssertionProof\",\"type\":\"bytes32\"}],\"name\":\"verifyAssertionProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"proofValid\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/DKGcontract.sol\":\"DKGcontract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"openzeppelin-solidity/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"project:/contracts/DKGcontract.sol\":{\"keccak256\":\"0xea0c3c1edba3277ff8a18e50b054ab4d2e1f9434b2554270a4cccb3edb0d9ef3\",\"urls\":[\"bzz-raw://259759777c8a56dae6f5980dd9b6a27725636643e6cc54b0fd6e6f3e997176c6\",\"dweb:/ipfs/QmWzcVDUJ8ymwT6dYd15VhpyZsB9WeCs9BeomSVxr5Cer7\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b506040516110423803806110428339818101604052602081101561003357600080fd5b810190808051906020019092919050505060006100546101f760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561012c57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd82cad5fdc98633445b90f806f2e1a61a5409f92187ee9cd87f1da18c906926660405160405180910390a2506101ff565b600033905090565b610e348061020e6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638f9cd32b116100715780638f9cd32b1461022b5780639e50e72c1461025f578063b934b4e4146102a1578063ce64c643146102e3578063f164c43614610325578063f2fde38b14610391576100b4565b80630828e9f3146100b957806308c4933b14610111578063193f9c7e1461015d5780636988bc03146101ab578063715018a6146101ed5780638da5cb5b146101f7575b600080fd5b6100e5600480360360208110156100cf57600080fd5b81019080803590602001909291905050506103d5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101476004803603604081101561012757600080fd5b810190808035906020019092919080359060200190929190505050610412565b6040518082815260200191505060405180910390f35b6101936004803603604081101561017357600080fd5b81019080803590602001909291908035906020019092919050505061041d565b60405180821515815260200191505060405180910390f35b6101d7600480360360208110156101c157600080fd5b8101908080359060200190929190505050610429565b6040518082815260200191505060405180910390f35b6101f5610449565b005b6101ff6105b6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102336105df565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61028b6004803603602081101561027557600080fd5b8101908080359060200190929190505050610605565b6040518082815260200191505060405180910390f35b6102cd600480360360208110156102b757600080fd5b8101908080359060200190929190505050610625565b6040518082815260200191505060405180910390f35b610323600480360360608110156102f957600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610645565b005b61038f600480360360a081101561033b57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506107ca565b005b6103d3600480360360208110156103a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b6e565b005b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600043905092915050565b60006001905092915050565b600060036000838152602001908152602001600020600001549050919050565b610451610d60565b73ffffffffffffffffffffffffffffffffffffffff1661046f6105b6565b73ffffffffffffffffffffffffffffffffffffffff16146104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060036000838152602001908152602001600020600101549050919050565b600060036000838152602001908152602001600020600401549050919050565b6000801b8314156106be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f617373657274696f6e494420686173682063616e6e6f74206265207a65726f0081525060200191505060405180910390fd5b6000801b82141561071a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610db66027913960400191505060405180910390fd5b610724838361041d565b1561077f57803373ffffffffffffffffffffffffffffffffffffffff16847fce001fcd900079c312eaa96f5c1c389ffe207eb41e90197f5a011668b58ef598607b6040518082815260200191505060405180910390a46107c5565b803373ffffffffffffffffffffffffffffffffffffffff16847f37d4188105d31e43e2177257c4e9cc2c8eda5c0783943eb00abe942ac687b03a60405160405180910390a45b505050565b6000801b851415610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f617373657274696f6e494420686173682063616e6e6f74206265207a65726f0081525060200191505060405180910390fd5b6000801b8414156108bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726f6f744861736820686173682063616e6e6f74206265207a65726f0000000081525060200191505060405180910390fd5b6000821415610916576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ddd6022913960400191505060405180910390fd5b6000811415610970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610d696027913960400191505060405180910390fd5b60006003600087815260200190815260200160002060020154146109fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f417373657274696f6e20616c726561647920657869737473210000000000000081525060200191505060405180910390fd5b816003600087815260200190815260200160002060010181905550806003600087815260200190815260200160002060000181905550426003600087815260200190815260200160002060020181905550836003600087815260200190815260200160002060040181905550826003600087815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826004600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1684867f25e2604032d2f5a218a9bed084fc10fd98b83e3b86a79ba39c214095984250168585604051808381526020018281526020019250505060405180910390a45050505050565b610b76610d60565b73ffffffffffffffffffffffffffffffffffffffff16610b946105b6565b73ffffffffffffffffffffffffffffffffffffffff1614610c1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610d906026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe617373657274696f6e54696d65546f4c69766520686173682063616e6e6f74206265207a65726f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737365706f6368417373657274696f6e50726f6f6620686173682063616e6e6f74206265207a65726f6e756d6265724f6645706f63687320686173682063616e6e6f74206265207a65726fa2646970667358221220152e1139f6922ba82f151b38f91761c9b96c2f0c3be8314e4fb01b519122451964736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80638f9cd32b116100715780638f9cd32b1461022b5780639e50e72c1461025f578063b934b4e4146102a1578063ce64c643146102e3578063f164c43614610325578063f2fde38b14610391576100b4565b80630828e9f3146100b957806308c4933b14610111578063193f9c7e1461015d5780636988bc03146101ab578063715018a6146101ed5780638da5cb5b146101f7575b600080fd5b6100e5600480360360208110156100cf57600080fd5b81019080803590602001909291905050506103d5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101476004803603604081101561012757600080fd5b810190808035906020019092919080359060200190929190505050610412565b6040518082815260200191505060405180910390f35b6101936004803603604081101561017357600080fd5b81019080803590602001909291908035906020019092919050505061041d565b60405180821515815260200191505060405180910390f35b6101d7600480360360208110156101c157600080fd5b8101908080359060200190929190505050610429565b6040518082815260200191505060405180910390f35b6101f5610449565b005b6101ff6105b6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102336105df565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61028b6004803603602081101561027557600080fd5b8101908080359060200190929190505050610605565b6040518082815260200191505060405180910390f35b6102cd600480360360208110156102b757600080fd5b8101908080359060200190929190505050610625565b6040518082815260200191505060405180910390f35b610323600480360360608110156102f957600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610645565b005b61038f600480360360a081101561033b57600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506107ca565b005b6103d3600480360360208110156103a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b6e565b005b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600043905092915050565b60006001905092915050565b600060036000838152602001908152602001600020600001549050919050565b610451610d60565b73ffffffffffffffffffffffffffffffffffffffff1661046f6105b6565b73ffffffffffffffffffffffffffffffffffffffff16146104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060036000838152602001908152602001600020600101549050919050565b600060036000838152602001908152602001600020600401549050919050565b6000801b8314156106be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f617373657274696f6e494420686173682063616e6e6f74206265207a65726f0081525060200191505060405180910390fd5b6000801b82141561071a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610db66027913960400191505060405180910390fd5b610724838361041d565b1561077f57803373ffffffffffffffffffffffffffffffffffffffff16847fce001fcd900079c312eaa96f5c1c389ffe207eb41e90197f5a011668b58ef598607b6040518082815260200191505060405180910390a46107c5565b803373ffffffffffffffffffffffffffffffffffffffff16847f37d4188105d31e43e2177257c4e9cc2c8eda5c0783943eb00abe942ac687b03a60405160405180910390a45b505050565b6000801b851415610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f617373657274696f6e494420686173682063616e6e6f74206265207a65726f0081525060200191505060405180910390fd5b6000801b8414156108bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f726f6f744861736820686173682063616e6e6f74206265207a65726f0000000081525060200191505060405180910390fd5b6000821415610916576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610ddd6022913960400191505060405180910390fd5b6000811415610970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610d696027913960400191505060405180910390fd5b60006003600087815260200190815260200160002060020154146109fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f417373657274696f6e20616c726561647920657869737473210000000000000081525060200191505060405180910390fd5b816003600087815260200190815260200160002060010181905550806003600087815260200190815260200160002060000181905550426003600087815260200190815260200160002060020181905550836003600087815260200190815260200160002060040181905550826003600087815260200190815260200160002060030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826004600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1684867f25e2604032d2f5a218a9bed084fc10fd98b83e3b86a79ba39c214095984250168585604051808381526020018281526020019250505060405180910390a45050505050565b610b76610d60565b73ffffffffffffffffffffffffffffffffffffffff16610b946105b6565b73ffffffffffffffffffffffffffffffffffffffff1614610c1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610d906026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe617373657274696f6e54696d65546f4c69766520686173682063616e6e6f74206265207a65726f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737365706f6368417373657274696f6e50726f6f6620686173682063616e6e6f74206265207a65726f6e756d6265724f6645706f63687320686173682063616e6e6f74206265207a65726fa2646970667358221220152e1139f6922ba82f151b38f91761c9b96c2f0c3be8314e4fb01b519122451964736f6c63430007060033", - "immutableReferences": {}, - "generatedSources": [], - "deployedGeneratedSources": [], - "sourceMap": "286:3623:7:-:0;;;1355:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:17:0;904:12;:10;;;:12;;:::i;:::-;884:32;;935:9;926:6;;:18;;;;;;;;;;;;;;;;;;992:9;959:43;;988:1;959:43;;;;;;;;;;;;850:159;1433:1:7;1410:25;;:13;:25;;;;1402:34;;;;;;1455:13;1440:5;;:29;;;;;;;;;;;;;;;;;;1494:13;1473:18;;:34;;;;;;;;;;;;;;;;;;1535:13;1519:30;;;;;;;;;;;;1355:199;286:3623;;598:104:6;651:15;685:10;678:17;;598:104;:::o;286:3623:7:-;;;;;;;", - "deployedSourceMap": "286:3623:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3189:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3783:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3050:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3463:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1717:145:0;;;:::i;:::-;;1085:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;368:33:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3621:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3320:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2576:469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1567:994;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2011:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3189:129:7;3259:15;3286;:28;3302:11;3286:28;;;;;;;;;;;;;;;;;;;;;3279:35;;3189:129;;;:::o;3783:123::-;3866:12;3890;3883:19;;3783:123;;;;:::o;3050:134::-;3148:15;3175:4;3168:11;;3050:134;;;;:::o;3463:156::-;3537:18;3567:15;:28;3583:11;3567:28;;;;;;;;;;;:48;;;3560:55;;3463:156;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1786:40;;1807:6;::::0;::::1;;;;;;;;1786:40;;;;;;;;;;;;1853:1;1836:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1717:145::o:0;1085:85::-;1131:7;1157:6;;;;;;;;;;;1150:13;;1085:85;:::o;368:33:7:-;;;;;;;;;;;;;:::o;3621:159::-;3699:22;3733:15;:28;3749:11;3733:28;;;;;;;;;;;:43;;;3726:50;;3621:159;;;:::o;3320:141::-;3392:16;3420:15;:28;3436:11;3420:28;;;;;;;;;;;:37;;;3413:44;;3320:141;;;:::o;2576:469::-;2711:1;2696:16;;:11;:16;;2688:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2783:1;2760:24;;:19;:24;;2752:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2837:54;2858:11;2871:19;2837:20;:54::i;:::-;2833:208;;;2941:11;2930:10;2902:56;;2918:11;2902:56;2954:3;2902:56;;;;;;;;;;;;;;;;;;2833:208;;;3023:11;3012:10;2981:54;;3000:11;2981:54;;;;;;;;;;2833:208;2576:469;;;:::o;1567:994::-;1740:1;1725:16;;:11;:16;;1717:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1801:1;1789:13;;:8;:13;;1781:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1865:1;1847:14;:19;;1839:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:1;1917:19;:24;;1909:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:1;1997:15;:28;2013:11;1997:28;;;;;;;;;;;:41;;;:44;1989:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2175:14;2129:15;:28;2145:11;2129:28;;;;;;;;;;;:43;;:60;;;;2244:19;2193:15;:28;2209:11;2193:28;;;;;;;;;;;:48;;:70;;;;2311:15;2267;:28;2283:11;2267:28;;;;;;;;;;;:41;;:59;;;;2370:8;2330:15;:28;2346:11;2330:28;;;;;;;;;;;:37;;:48;;;;2420:6;2382:15;:28;2398:11;2382:28;;;;;;;;;;;:35;;;:44;;;;;;;;;;;;;;;;;;2461:6;2430:15;:28;2446:11;2430:28;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2515:6;2477:80;;2506:8;2494:11;2477:80;2522:14;2537:19;2477:80;;;;;;;;;;;;;;;;;;;;;;;;1567:994;;;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2119:1:::1;2099:22;;:8;:22;;;;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:8;2179:38;;2200:6;::::0;::::1;;;;;;;;2179:38;;;;;;;;;;;;2236:8;2227:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2011:240:::0;:::o;598:104:6:-;651:15;685:10;678:17;;598:104;:::o", - "source": "pragma solidity >=0.6.0 <0.8.0;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/access/Ownable.sol\";\n\n\n// mock contract for now, we will add the hub and the rest later\ncontract DKGcontract is Ownable {\n\n\n\tusing SafeMath for uint256;\n\tIERC20 token;\n\n\taddress public TRAC_TOKEN_ADDRESS;\n\n\tstruct AssertionRecord{\n\t\t// bytes32 assertionID; // hash (multihash) of the assertion\n\t\tuint256 assertionTimeToLive;\n\t\tuint256 numberOfEpochs;\n\t\tuint256 creationTime;\n\t\taddress issuer;\n\t\tbytes32 rootHash;\n\t\tbytes32 data; // for extensibility\n\t\t// TODO: include Token management\n\t}\n\n\tmapping(bytes32 => AssertionRecord) internal assertionRecord; // assertionRecord[assertionID] , formerly offer[offerID]\n\tmapping(bytes32 => address) internal assertionIssuer; // mapping assertionID -> assertionIssuer\n\n\n\t// events\n\tevent TokenAddressSet(address indexed token);\n\tevent AssertionCreated(bytes32 indexed assertionID, bytes32 indexed rootHash, address indexed assertionIssuer, uint256 numberOfEpochs, uint256 assertionTimeToLive);\n\tevent TokensCollected(bytes32 indexed assertionID, address indexed prover, uint256 indexed epoch, uint256 amount);\n\tevent VerificationFailed(bytes32 indexed assertionID, address indexed prover, uint256 indexed epoch);\n\n\n\n\tconstructor(address token_address) public {\n\t\trequire(token_address!=address(0));\n\t\ttoken = IERC20(token_address);\n\t\tTRAC_TOKEN_ADDRESS = token_address;\n\t\t\n\t\temit TokenAddressSet(token_address);\n\n\t}\n\n\t/* DC */\n\tfunction createAssertionRecord(bytes32 assertionID, bytes32 rootHash, address issuer, uint256 numberOfEpochs, uint256 assertionTimeToLive) public {\n\t\trequire(assertionID != 0, \"assertionID hash cannot be zero\");\n\t\trequire(rootHash != 0, \"rootHash hash cannot be zero\");\n\t\trequire(numberOfEpochs != 0, \"numberOfEpochs hash cannot be zero\");\n\t\trequire(assertionTimeToLive != 0, \"assertionTimeToLive hash cannot be zero\");\n\t\trequire(assertionRecord[assertionID].creationTime==0, \"Assertion already exists!\");\n\n\t\t// transfer token to contract here (next version)\n\n\t\tassertionRecord[assertionID].numberOfEpochs = numberOfEpochs;\n\t\tassertionRecord[assertionID].assertionTimeToLive = assertionTimeToLive;\n\t\tassertionRecord[assertionID].creationTime = block.timestamp;\n\t\tassertionRecord[assertionID].rootHash = rootHash;\n\t\tassertionRecord[assertionID].issuer = issuer;\n\t\tassertionIssuer[assertionID] = issuer;\n\n\t\temit AssertionCreated(assertionID,rootHash,issuer,numberOfEpochs,assertionTimeToLive);\n\t}\n\n\n\t/* DH */\n\n\tfunction submitHoldingProof(bytes32 assertionID, bytes32 epochAssertionProof, uint256 epochNumber) \n\tpublic {\n\t\trequire(assertionID != 0, \"assertionID hash cannot be zero\");\n\t\trequire(epochAssertionProof != 0, \"epochAssertionProof hash cannot be zero\");\n\n\t\tif (verifyAssertionProof(assertionID, epochAssertionProof)){\n\t\t\temit TokensCollected(assertionID,msg.sender,epochNumber, 123);\n\t\t\t} else {\n\t\t\t\temit VerificationFailed(assertionID,msg.sender,epochNumber);\n\t\t\t}\n\n\t}\n\n\n\n\tfunction verifyAssertionProof(bytes32 assertionID, bytes32 epochAssertionProof) \n\t\tpublic returns(bool proofValid){\n\t\treturn true;\n\n\t}\n\n\n\n\tfunction getAssertionIssuer(bytes32 assertionID)\n\tpublic view returns(address creator){\n\t\treturn assertionIssuer[assertionID];\n\t}\n\tfunction getAssertionRootHash(bytes32 assertionID)\n\tpublic view returns(bytes32 rootHash){\n\t\treturn assertionRecord[assertionID].rootHash;\n\t}\n\tfunction getAssertionTimeToLive(bytes32 assertionID)\n\tpublic view returns(uint256 timeToLive){\n\t\treturn assertionRecord[assertionID].assertionTimeToLive;\n\t}\n\tfunction getAssertionNumberOfEpochs(bytes32 assertionID)\n\tpublic view returns(uint256 numberOfEpochs){\n\t\treturn assertionRecord[assertionID].numberOfEpochs;\n\t}\n\n\tfunction getAssertionTask(bytes32 assertionID, uint256 epoch)\n\tpublic view returns(uint256 task){\n\t\treturn block.number;\n\t}\n\n}", - "sourcePath": "/Users/miloskotlar/dkg-onchain-module-v6/contracts/DKGcontract.sol", - "ast": { - "absolutePath": "project:/contracts/DKGcontract.sol", - "exportedSymbols": { - "Context": [ - 815 - ], - "DKGcontract": [ - 1138 - ], - "IERC20": [ - 676 - ], - "Ownable": [ - 109 - ], - "SafeMath": [ - 476 - ] - }, - "id": 1139, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 817, - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "0:31:7" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 818, - "nodeType": "ImportDirective", - "scope": 1139, - "sourceUnit": 677, - "src": "33:64:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "id": 819, - "nodeType": "ImportDirective", - "scope": 1139, - "sourceUnit": 477, - "src": "98:59:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "file": "openzeppelin-solidity/contracts/access/Ownable.sol", - "id": 820, - "nodeType": "ImportDirective", - "scope": 1139, - "sourceUnit": 110, - "src": "158:60:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 821, - "name": "Ownable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 109, - "src": "310:7:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$109", - "typeString": "contract Ownable" - } - }, - "id": 822, - "nodeType": "InheritanceSpecifier", - "src": "310:7:7" - } - ], - "contractDependencies": [ - 109, - 815 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 1138, - "linearizedBaseContracts": [ - 1138, - 109, - 815 - ], - "name": "DKGcontract", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 825, - "libraryName": { - "id": 823, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 476, - "src": "329:8:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$476", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "323:27:7", - "typeName": { - "id": 824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "342:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "constant": false, - "id": 827, - "mutability": "mutable", - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1138, - "src": "352:12:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - }, - "typeName": { - "id": 826, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 676, - "src": "352:6:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "functionSelector": "8f9cd32b", - "id": 829, - "mutability": "mutable", - "name": "TRAC_TOKEN_ADDRESS", - "nodeType": "VariableDeclaration", - "scope": 1138, - "src": "368:33:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 828, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "368:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "canonicalName": "DKGcontract.AssertionRecord", - "id": 842, - "members": [ - { - "constant": false, - "id": 831, - "mutability": "mutable", - "name": "assertionTimeToLive", - "nodeType": "VariableDeclaration", - "scope": 842, - "src": "494:27:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 830, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "494:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 833, - "mutability": "mutable", - "name": "numberOfEpochs", - "nodeType": "VariableDeclaration", - "scope": 842, - "src": "525:22:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 832, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "525:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 835, - "mutability": "mutable", - "name": "creationTime", - "nodeType": "VariableDeclaration", - "scope": 842, - "src": "551:20:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 834, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "551:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 837, - "mutability": "mutable", - "name": "issuer", - "nodeType": "VariableDeclaration", - "scope": 842, - "src": "575:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 836, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "575:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 839, - "mutability": "mutable", - "name": "rootHash", - "nodeType": "VariableDeclaration", - "scope": 842, - "src": "593:16:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 838, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "593:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 841, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 842, - "src": "613:12:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 840, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "613:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "name": "AssertionRecord", - "nodeType": "StructDefinition", - "scope": 1138, - "src": "405:281:7", - "visibility": "public" - }, - { - "constant": false, - "id": 846, - "mutability": "mutable", - "name": "assertionRecord", - "nodeType": "VariableDeclaration", - "scope": 1138, - "src": "689:60:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord)" - }, - "typeName": { - "id": 845, - "keyType": { - "id": 843, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "697:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "689:35:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord)" - }, - "valueType": { - "id": 844, - "name": "AssertionRecord", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 842, - "src": "708:15:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage_ptr", - "typeString": "struct DKGcontract.AssertionRecord" - } - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 850, - "mutability": "mutable", - "name": "assertionIssuer", - "nodeType": "VariableDeclaration", - "scope": 1138, - "src": "810:52:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - }, - "typeName": { - "id": 849, - "keyType": { - "id": 847, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "818:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "810:27:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - }, - "valueType": { - "id": 848, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "829:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "visibility": "internal" - }, - { - "anonymous": false, - "id": 854, - "name": "TokenAddressSet", - "nodeType": "EventDefinition", - "parameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 852, - "indexed": true, - "mutability": "mutable", - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 854, - "src": "942:21:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 851, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "942:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "941:23:7" - }, - "src": "920:45:7" - }, - { - "anonymous": false, - "id": 866, - "name": "AssertionCreated", - "nodeType": "EventDefinition", - "parameters": { - "id": 865, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 856, - "indexed": true, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 866, - "src": "990:27:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 855, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "990:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 858, - "indexed": true, - "mutability": "mutable", - "name": "rootHash", - "nodeType": "VariableDeclaration", - "scope": 866, - "src": "1019:24:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 857, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1019:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 860, - "indexed": true, - "mutability": "mutable", - "name": "assertionIssuer", - "nodeType": "VariableDeclaration", - "scope": 866, - "src": "1045:31:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 859, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1045:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 862, - "indexed": false, - "mutability": "mutable", - "name": "numberOfEpochs", - "nodeType": "VariableDeclaration", - "scope": 866, - "src": "1078:22:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 861, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1078:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 864, - "indexed": false, - "mutability": "mutable", - "name": "assertionTimeToLive", - "nodeType": "VariableDeclaration", - "scope": 866, - "src": "1102:27:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 863, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1102:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "989:141:7" - }, - "src": "967:164:7" - }, - { - "anonymous": false, - "id": 876, - "name": "TokensCollected", - "nodeType": "EventDefinition", - "parameters": { - "id": 875, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 868, - "indexed": true, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "1155:27:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 867, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1155:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 870, - "indexed": true, - "mutability": "mutable", - "name": "prover", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "1184:22:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 869, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1184:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 872, - "indexed": true, - "mutability": "mutable", - "name": "epoch", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "1208:21:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 871, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1208:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 874, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "1231:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 873, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1231:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1154:92:7" - }, - "src": "1133:114:7" - }, - { - "anonymous": false, - "id": 884, - "name": "VerificationFailed", - "nodeType": "EventDefinition", - "parameters": { - "id": 883, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 878, - "indexed": true, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 884, - "src": "1274:27:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 877, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1274:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 880, - "indexed": true, - "mutability": "mutable", - "name": "prover", - "nodeType": "VariableDeclaration", - "scope": 884, - "src": "1303:22:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 879, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1303:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 882, - "indexed": true, - "mutability": "mutable", - "name": "epoch", - "nodeType": "VariableDeclaration", - "scope": 884, - "src": "1327:21:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 881, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1327:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1273:76:7" - }, - "src": "1249:101:7" - }, - { - "body": { - "id": 912, - "nodeType": "Block", - "src": "1398:156:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 890, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 886, - "src": "1410:13:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 893, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1433:1:7", - "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": 892, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1425:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 891, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1425:7:7", - "typeDescriptions": {} - } - }, - "id": 894, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1425:10:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "1410:25:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 889, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1402:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1402:34:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 897, - "nodeType": "ExpressionStatement", - "src": "1402:34:7" - }, - { - "expression": { - "id": 902, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 898, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "1440:5:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 900, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 886, - "src": "1455:13:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 899, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "1448:6:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$676_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1448:21:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "src": "1440:29:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "id": 903, - "nodeType": "ExpressionStatement", - "src": "1440:29:7" - }, - { - "expression": { - "id": 906, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 904, - "name": "TRAC_TOKEN_ADDRESS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 829, - "src": "1473:18:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 905, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 886, - "src": "1494:13:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1473:34:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 907, - "nodeType": "ExpressionStatement", - "src": "1473:34:7" - }, - { - "eventCall": { - "arguments": [ - { - "id": 909, - "name": "token_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 886, - "src": "1535:13:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 908, - "name": "TokenAddressSet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 854, - "src": "1519:15:7", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1519:30:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 911, - "nodeType": "EmitStatement", - "src": "1514:35:7" - } - ] - }, - "id": 913, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 887, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 886, - "mutability": "mutable", - "name": "token_address", - "nodeType": "VariableDeclaration", - "scope": 913, - "src": "1367:21:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 885, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1367:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1366:23:7" - }, - "returnParameters": { - "id": 888, - "nodeType": "ParameterList", - "parameters": [], - "src": "1398:0:7" - }, - "scope": 1138, - "src": "1355:199:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1014, - "nodeType": "Block", - "src": "1713:848:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 927, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "1725:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 928, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1740:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1725:16:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "617373657274696f6e494420686173682063616e6e6f74206265207a65726f", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1743:33:7", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_649a3d58a096eb864e1646a68edf6e493c6de795be271ef6a8cd2b478518591c", - "typeString": "literal_string \"assertionID hash cannot be zero\"" - }, - "value": "assertionID hash cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_649a3d58a096eb864e1646a68edf6e493c6de795be271ef6a8cd2b478518591c", - "typeString": "literal_string \"assertionID hash cannot be zero\"" - } - ], - "id": 926, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1717:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 931, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1717:60:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 932, - "nodeType": "ExpressionStatement", - "src": "1717:60:7" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 936, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 934, - "name": "rootHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "1789:8:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1801:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1789:13:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "726f6f744861736820686173682063616e6e6f74206265207a65726f", - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1804:30:7", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_224e5e3aafad117a551900ad41b6b8fd4124c64978d6cb6f2d999d30b5a7caf6", - "typeString": "literal_string \"rootHash hash cannot be zero\"" - }, - "value": "rootHash hash cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_224e5e3aafad117a551900ad41b6b8fd4124c64978d6cb6f2d999d30b5a7caf6", - "typeString": "literal_string \"rootHash hash cannot be zero\"" - } - ], - "id": 933, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1781:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1781:54:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 939, - "nodeType": "ExpressionStatement", - "src": "1781:54:7" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 943, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 941, - "name": "numberOfEpochs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 921, - "src": "1847:14:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 942, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1865:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1847:19:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "6e756d6265724f6645706f63687320686173682063616e6e6f74206265207a65726f", - "id": 944, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1868:36:7", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fa4af5b2a5d3b443608ae031fd9009eab2ce4cb844577b417eed67d3d60328f1", - "typeString": "literal_string \"numberOfEpochs hash cannot be zero\"" - }, - "value": "numberOfEpochs hash cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fa4af5b2a5d3b443608ae031fd9009eab2ce4cb844577b417eed67d3d60328f1", - "typeString": "literal_string \"numberOfEpochs hash cannot be zero\"" - } - ], - "id": 940, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1839:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1839:66:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 946, - "nodeType": "ExpressionStatement", - "src": "1839:66:7" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 948, - "name": "assertionTimeToLive", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 923, - "src": "1917:19:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 949, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1940:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1917:24:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "617373657274696f6e54696d65546f4c69766520686173682063616e6e6f74206265207a65726f", - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1943:41:7", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_069e2edd21d0b2ae0e0fdeacec1cd50fed913131221cbb295c527db83a0001af", - "typeString": "literal_string \"assertionTimeToLive hash cannot be zero\"" - }, - "value": "assertionTimeToLive hash cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_069e2edd21d0b2ae0e0fdeacec1cd50fed913131221cbb295c527db83a0001af", - "typeString": "literal_string \"assertionTimeToLive hash cannot be zero\"" - } - ], - "id": 947, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1909:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1909:76:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "1909:76:7" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 960, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "baseExpression": { - "id": 955, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "1997:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 957, - "indexExpression": { - "id": 956, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2013:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1997:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 958, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "creationTime", - "nodeType": "MemberAccess", - "referencedDeclaration": 835, - "src": "1997:41:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 959, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2040:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1997:44:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "417373657274696f6e20616c72656164792065786973747321", - "id": 961, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2043:27:7", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_533fbfe4d9ec6c5b4aac3ac2c85a5993318086c6dfacddd0ec06ea4b669082d1", - "typeString": "literal_string \"Assertion already exists!\"" - }, - "value": "Assertion already exists!" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_533fbfe4d9ec6c5b4aac3ac2c85a5993318086c6dfacddd0ec06ea4b669082d1", - "typeString": "literal_string \"Assertion already exists!\"" - } - ], - "id": 954, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1989:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1989:82:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 963, - "nodeType": "ExpressionStatement", - "src": "1989:82:7" - }, - { - "expression": { - "id": 969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 964, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "2129:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 966, - "indexExpression": { - "id": 965, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2145:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2129:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 967, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "numberOfEpochs", - "nodeType": "MemberAccess", - "referencedDeclaration": 833, - "src": "2129:43:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 968, - "name": "numberOfEpochs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 921, - "src": "2175:14:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2129:60:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 970, - "nodeType": "ExpressionStatement", - "src": "2129:60:7" - }, - { - "expression": { - "id": 976, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 971, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "2193:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 973, - "indexExpression": { - "id": 972, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2209:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2193:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 974, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "assertionTimeToLive", - "nodeType": "MemberAccess", - "referencedDeclaration": 831, - "src": "2193:48:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 975, - "name": "assertionTimeToLive", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 923, - "src": "2244:19:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2193:70:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 977, - "nodeType": "ExpressionStatement", - "src": "2193:70:7" - }, - { - "expression": { - "id": 984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 978, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "2267:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 980, - "indexExpression": { - "id": 979, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2283:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2267:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 981, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "creationTime", - "nodeType": "MemberAccess", - "referencedDeclaration": 835, - "src": "2267:41:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 982, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967292, - "src": "2311:5:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "2311:15:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2267:59:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 985, - "nodeType": "ExpressionStatement", - "src": "2267:59:7" - }, - { - "expression": { - "id": 991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 986, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "2330:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 988, - "indexExpression": { - "id": 987, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2346:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2330:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 989, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "rootHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 839, - "src": "2330:37:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 990, - "name": "rootHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "2370:8:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2330:48:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 992, - "nodeType": "ExpressionStatement", - "src": "2330:48:7" - }, - { - "expression": { - "id": 998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 993, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "2382:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 995, - "indexExpression": { - "id": 994, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2398:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2382:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 996, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "issuer", - "nodeType": "MemberAccess", - "referencedDeclaration": 837, - "src": "2382:35:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 997, - "name": "issuer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 919, - "src": "2420:6:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2382:44:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 999, - "nodeType": "ExpressionStatement", - "src": "2382:44:7" - }, - { - "expression": { - "id": 1004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 1000, - "name": "assertionIssuer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 850, - "src": "2430:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 1002, - "indexExpression": { - "id": 1001, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2446:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2430:28:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1003, - "name": "issuer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 919, - "src": "2461:6:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2430:37:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1005, - "nodeType": "ExpressionStatement", - "src": "2430:37:7" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1007, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2494:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1008, - "name": "rootHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "2506:8:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1009, - "name": "issuer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 919, - "src": "2515:6:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1010, - "name": "numberOfEpochs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 921, - "src": "2522:14:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1011, - "name": "assertionTimeToLive", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 923, - "src": "2537:19:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1006, - "name": "AssertionCreated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 866, - "src": "2477:16:7", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (bytes32,bytes32,address,uint256,uint256)" - } - }, - "id": 1012, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2477:80:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1013, - "nodeType": "EmitStatement", - "src": "2472:85:7" - } - ] - }, - "functionSelector": "f164c436", - "id": 1015, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "createAssertionRecord", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 924, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 915, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 1015, - "src": "1598:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 914, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1598:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 917, - "mutability": "mutable", - "name": "rootHash", - "nodeType": "VariableDeclaration", - "scope": 1015, - "src": "1619:16:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 916, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1619:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 919, - "mutability": "mutable", - "name": "issuer", - "nodeType": "VariableDeclaration", - "scope": 1015, - "src": "1637:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 918, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1637:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 921, - "mutability": "mutable", - "name": "numberOfEpochs", - "nodeType": "VariableDeclaration", - "scope": 1015, - "src": "1653:22:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 920, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1653:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 923, - "mutability": "mutable", - "name": "assertionTimeToLive", - "nodeType": "VariableDeclaration", - "scope": 1015, - "src": "1677:27:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 922, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1677:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1597:108:7" - }, - "returnParameters": { - "id": 925, - "nodeType": "ParameterList", - "parameters": [], - "src": "1713:0:7" - }, - "scope": 1138, - "src": "1567:994:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1060, - "nodeType": "Block", - "src": "2684:361:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1027, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1025, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "2696:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1026, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2711:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2696:16:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "617373657274696f6e494420686173682063616e6e6f74206265207a65726f", - "id": 1028, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2714:33:7", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_649a3d58a096eb864e1646a68edf6e493c6de795be271ef6a8cd2b478518591c", - "typeString": "literal_string \"assertionID hash cannot be zero\"" - }, - "value": "assertionID hash cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_649a3d58a096eb864e1646a68edf6e493c6de795be271ef6a8cd2b478518591c", - "typeString": "literal_string \"assertionID hash cannot be zero\"" - } - ], - "id": 1024, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "2688:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2688:60:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1030, - "nodeType": "ExpressionStatement", - "src": "2688:60:7" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1034, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1032, - "name": "epochAssertionProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1019, - "src": "2760:19:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2783:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2760:24:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "65706f6368417373657274696f6e50726f6f6620686173682063616e6e6f74206265207a65726f", - "id": 1035, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2786:41:7", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_51a89ccd247a0e5232bbda470ea88b3fa7ebe5c9c4e686866df3ae98cc738613", - "typeString": "literal_string \"epochAssertionProof hash cannot be zero\"" - }, - "value": "epochAssertionProof hash cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_51a89ccd247a0e5232bbda470ea88b3fa7ebe5c9c4e686866df3ae98cc738613", - "typeString": "literal_string \"epochAssertionProof hash cannot be zero\"" - } - ], - "id": 1031, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "2752:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1036, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2752:76:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1037, - "nodeType": "ExpressionStatement", - "src": "2752:76:7" - }, - { - "condition": { - "arguments": [ - { - "id": 1039, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "2858:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1040, - "name": "epochAssertionProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1019, - "src": "2871:19:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1038, - "name": "verifyAssertionProof", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1073, - "src": "2837:20:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (bytes32,bytes32) returns (bool)" - } - }, - "id": 1041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2837:54:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1058, - "nodeType": "Block", - "src": "2970:71:7", - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 1052, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "3000:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 1053, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "3012:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1054, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3012:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 1055, - "name": "epochNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "3023:11:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1051, - "name": "VerificationFailed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 884, - "src": "2981:18:7", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (bytes32,address,uint256)" - } - }, - "id": 1056, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2981:54:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1057, - "nodeType": "EmitStatement", - "src": "2976:59:7" - } - ] - }, - "id": 1059, - "nodeType": "IfStatement", - "src": "2833:208:7", - "trueBody": { - "id": 1050, - "nodeType": "Block", - "src": "2892:72:7", - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 1043, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "2918:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 1044, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "2930:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1045, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2930:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 1046, - "name": "epochNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "2941:11:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "313233", - "id": 1047, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2954:3:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_123_by_1", - "typeString": "int_const 123" - }, - "value": "123" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_123_by_1", - "typeString": "int_const 123" - } - ], - "id": 1042, - "name": "TokensCollected", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 876, - "src": "2902:15:7", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (bytes32,address,uint256,uint256)" - } - }, - "id": 1048, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2902:56:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1049, - "nodeType": "EmitStatement", - "src": "2897:61:7" - } - ] - } - } - ] - }, - "functionSelector": "ce64c643", - "id": 1061, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "submitHoldingProof", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1022, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1017, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 1061, - "src": "2604:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1016, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2604:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1019, - "mutability": "mutable", - "name": "epochAssertionProof", - "nodeType": "VariableDeclaration", - "scope": 1061, - "src": "2625:27:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1018, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2625:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1021, - "mutability": "mutable", - "name": "epochNumber", - "nodeType": "VariableDeclaration", - "scope": 1061, - "src": "2654:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1020, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2654:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2603:71:7" - }, - "returnParameters": { - "id": 1023, - "nodeType": "ParameterList", - "parameters": [], - "src": "2684:0:7" - }, - "scope": 1138, - "src": "2576:469:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1072, - "nodeType": "Block", - "src": "3164:20:7", - "statements": [ - { - "expression": { - "hexValue": "74727565", - "id": 1070, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3175:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1069, - "id": 1071, - "nodeType": "Return", - "src": "3168:11:7" - } - ] - }, - "functionSelector": "193f9c7e", - "id": 1073, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "verifyAssertionProof", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1066, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1063, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 1073, - "src": "3080:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1062, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3080:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1065, - "mutability": "mutable", - "name": "epochAssertionProof", - "nodeType": "VariableDeclaration", - "scope": 1073, - "src": "3101:27:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1064, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3101:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3079:50:7" - }, - "returnParameters": { - "id": 1069, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1068, - "mutability": "mutable", - "name": "proofValid", - "nodeType": "VariableDeclaration", - "scope": 1073, - "src": "3148:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1067, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3148:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "3147:17:7" - }, - "scope": 1138, - "src": "3050:134:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1084, - "nodeType": "Block", - "src": "3275:43:7", - "statements": [ - { - "expression": { - "baseExpression": { - "id": 1080, - "name": "assertionIssuer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 850, - "src": "3286:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 1082, - "indexExpression": { - "id": 1081, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1075, - "src": "3302:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3286:28:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 1079, - "id": 1083, - "nodeType": "Return", - "src": "3279:35:7" - } - ] - }, - "functionSelector": "0828e9f3", - "id": 1085, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssertionIssuer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1076, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1075, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 1085, - "src": "3217:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1074, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3217:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3216:21:7" - }, - "returnParameters": { - "id": 1079, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1078, - "mutability": "mutable", - "name": "creator", - "nodeType": "VariableDeclaration", - "scope": 1085, - "src": "3259:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1077, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3259:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3258:17:7" - }, - "scope": 1138, - "src": "3189:129:7", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1097, - "nodeType": "Block", - "src": "3409:52:7", - "statements": [ - { - "expression": { - "expression": { - "baseExpression": { - "id": 1092, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "3420:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 1094, - "indexExpression": { - "id": 1093, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "3436:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3420:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 1095, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "rootHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 839, - "src": "3420:37:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1091, - "id": 1096, - "nodeType": "Return", - "src": "3413:44:7" - } - ] - }, - "functionSelector": "b934b4e4", - "id": 1098, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssertionRootHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1088, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1087, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 1098, - "src": "3350:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1086, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3350:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3349:21:7" - }, - "returnParameters": { - "id": 1091, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1090, - "mutability": "mutable", - "name": "rootHash", - "nodeType": "VariableDeclaration", - "scope": 1098, - "src": "3392:16:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1089, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3392:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3391:18:7" - }, - "scope": 1138, - "src": "3320:141:7", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1110, - "nodeType": "Block", - "src": "3556:63:7", - "statements": [ - { - "expression": { - "expression": { - "baseExpression": { - "id": 1105, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "3567:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 1107, - "indexExpression": { - "id": 1106, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "3583:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3567:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 1108, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "assertionTimeToLive", - "nodeType": "MemberAccess", - "referencedDeclaration": 831, - "src": "3567:48:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1104, - "id": 1109, - "nodeType": "Return", - "src": "3560:55:7" - } - ] - }, - "functionSelector": "6988bc03", - "id": 1111, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssertionTimeToLive", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1101, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1100, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "3495:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1099, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3495:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3494:21:7" - }, - "returnParameters": { - "id": 1104, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1103, - "mutability": "mutable", - "name": "timeToLive", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "3537:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1102, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3537:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3536:20:7" - }, - "scope": 1138, - "src": "3463:156:7", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1123, - "nodeType": "Block", - "src": "3722:58:7", - "statements": [ - { - "expression": { - "expression": { - "baseExpression": { - "id": 1118, - "name": "assertionRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 846, - "src": "3733:15:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssertionRecord_$842_storage_$", - "typeString": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)" - } - }, - "id": 1120, - "indexExpression": { - "id": 1119, - "name": "assertionID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1113, - "src": "3749:11:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3733:28:7", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssertionRecord_$842_storage", - "typeString": "struct DKGcontract.AssertionRecord storage ref" - } - }, - "id": 1121, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "numberOfEpochs", - "nodeType": "MemberAccess", - "referencedDeclaration": 833, - "src": "3733:43:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1117, - "id": 1122, - "nodeType": "Return", - "src": "3726:50:7" - } - ] - }, - "functionSelector": "9e50e72c", - "id": 1124, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssertionNumberOfEpochs", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1114, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1113, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "3657:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1112, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3657:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3656:21:7" - }, - "returnParameters": { - "id": 1117, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1116, - "mutability": "mutable", - "name": "numberOfEpochs", - "nodeType": "VariableDeclaration", - "scope": 1124, - "src": "3699:22:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1115, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3699:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3698:24:7" - }, - "scope": 1138, - "src": "3621:159:7", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1136, - "nodeType": "Block", - "src": "3879:27:7", - "statements": [ - { - "expression": { - "expression": { - "id": 1133, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967292, - "src": "3890:5:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "src": "3890:12:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1132, - "id": 1135, - "nodeType": "Return", - "src": "3883:19:7" - } - ] - }, - "functionSelector": "08c4933b", - "id": 1137, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssertionTask", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1129, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1126, - "mutability": "mutable", - "name": "assertionID", - "nodeType": "VariableDeclaration", - "scope": 1137, - "src": "3809:19:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1125, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3809:7:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1128, - "mutability": "mutable", - "name": "epoch", - "nodeType": "VariableDeclaration", - "scope": 1137, - "src": "3830:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1127, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3830:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3808:36:7" - }, - "returnParameters": { - "id": 1132, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1131, - "mutability": "mutable", - "name": "task", - "nodeType": "VariableDeclaration", - "scope": 1137, - "src": "3866:12:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1130, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3866:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3865:14:7" - }, - "scope": 1138, - "src": "3783:123:7", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - } - ], - "scope": 1139, - "src": "286:3623:7" - } - ], - "src": "0:3909:7" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/DKGcontract.sol", - "exportedSymbols": { - "Context": [ - 815 - ], - "DKGcontract": [ - 1138 - ], - "IERC20": [ - 676 - ], - "Ownable": [ - 109 - ], - "SafeMath": [ - 476 - ] - } - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ] - }, - "id": 817, - "name": "PragmaDirective", - "src": "0:31:7" - }, - { - "attributes": { - "SourceUnit": 677, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "scope": 1139, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 818, - "name": "ImportDirective", - "src": "33:64:7" - }, - { - "attributes": { - "SourceUnit": 477, - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "scope": 1139, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 819, - "name": "ImportDirective", - "src": "98:59:7" - }, - { - "attributes": { - "SourceUnit": 110, - "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "file": "openzeppelin-solidity/contracts/access/Ownable.sol", - "scope": 1139, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 820, - "name": "ImportDirective", - "src": "158:60:7" - }, - { - "attributes": { - "abstract": false, - "contractDependencies": [ - 109, - 815 - ], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 1138, - 109, - 815 - ], - "name": "DKGcontract", - "scope": 1139 - }, - "children": [ - { - "attributes": {}, - "children": [ - { - "attributes": { - "name": "Ownable", - "referencedDeclaration": 109, - "type": "contract Ownable" - }, - "id": 821, - "name": "UserDefinedTypeName", - "src": "310:7:7" - } - ], - "id": 822, - "name": "InheritanceSpecifier", - "src": "310:7:7" - }, - { - "children": [ - { - "attributes": { - "name": "SafeMath", - "referencedDeclaration": 476, - "type": "library SafeMath" - }, - "id": 823, - "name": "UserDefinedTypeName", - "src": "329:8:7" - }, - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 824, - "name": "ElementaryTypeName", - "src": "342:7:7" - } - ], - "id": 825, - "name": "UsingForDirective", - "src": "323:27:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "token", - "scope": 1138, - "stateVariable": true, - "storageLocation": "default", - "type": "contract IERC20", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "IERC20", - "referencedDeclaration": 676, - "type": "contract IERC20" - }, - "id": 826, - "name": "UserDefinedTypeName", - "src": "352:6:7" - } - ], - "id": 827, - "name": "VariableDeclaration", - "src": "352:12:7" - }, - { - "attributes": { - "constant": false, - "functionSelector": "8f9cd32b", - "mutability": "mutable", - "name": "TRAC_TOKEN_ADDRESS", - "scope": 1138, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 828, - "name": "ElementaryTypeName", - "src": "368:7:7" - } - ], - "id": 829, - "name": "VariableDeclaration", - "src": "368:33:7" - }, - { - "attributes": { - "canonicalName": "DKGcontract.AssertionRecord", - "name": "AssertionRecord", - "scope": 1138, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionTimeToLive", - "scope": 842, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 830, - "name": "ElementaryTypeName", - "src": "494:7:7" - } - ], - "id": 831, - "name": "VariableDeclaration", - "src": "494:27:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "numberOfEpochs", - "scope": 842, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 832, - "name": "ElementaryTypeName", - "src": "525:7:7" - } - ], - "id": 833, - "name": "VariableDeclaration", - "src": "525:22:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "creationTime", - "scope": 842, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 834, - "name": "ElementaryTypeName", - "src": "551:7:7" - } - ], - "id": 835, - "name": "VariableDeclaration", - "src": "551:20:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "issuer", - "scope": 842, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 836, - "name": "ElementaryTypeName", - "src": "575:7:7" - } - ], - "id": 837, - "name": "VariableDeclaration", - "src": "575:14:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "rootHash", - "scope": 842, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 838, - "name": "ElementaryTypeName", - "src": "593:7:7" - } - ], - "id": 839, - "name": "VariableDeclaration", - "src": "593:16:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "scope": 842, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 840, - "name": "ElementaryTypeName", - "src": "613:7:7" - } - ], - "id": 841, - "name": "VariableDeclaration", - "src": "613:12:7" - } - ], - "id": 842, - "name": "StructDefinition", - "src": "405:281:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionRecord", - "scope": 1138, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord)", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 843, - "name": "ElementaryTypeName", - "src": "697:7:7" - }, - { - "attributes": { - "name": "AssertionRecord", - "referencedDeclaration": 842, - "type": "struct DKGcontract.AssertionRecord" - }, - "id": 844, - "name": "UserDefinedTypeName", - "src": "708:15:7" - } - ], - "id": 845, - "name": "Mapping", - "src": "689:35:7" - } - ], - "id": 846, - "name": "VariableDeclaration", - "src": "689:60:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionIssuer", - "scope": 1138, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => address)", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => address)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 847, - "name": "ElementaryTypeName", - "src": "818:7:7" - }, - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 848, - "name": "ElementaryTypeName", - "src": "829:7:7" - } - ], - "id": 849, - "name": "Mapping", - "src": "810:27:7" - } - ], - "id": 850, - "name": "VariableDeclaration", - "src": "810:52:7" - }, - { - "attributes": { - "anonymous": false, - "name": "TokenAddressSet" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "token", - "scope": 854, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 851, - "name": "ElementaryTypeName", - "src": "942:7:7" - } - ], - "id": 852, - "name": "VariableDeclaration", - "src": "942:21:7" - } - ], - "id": 853, - "name": "ParameterList", - "src": "941:23:7" - } - ], - "id": 854, - "name": "EventDefinition", - "src": "920:45:7" - }, - { - "attributes": { - "anonymous": false, - "name": "AssertionCreated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "assertionID", - "scope": 866, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 855, - "name": "ElementaryTypeName", - "src": "990:7:7" - } - ], - "id": 856, - "name": "VariableDeclaration", - "src": "990:27:7" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "rootHash", - "scope": 866, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 857, - "name": "ElementaryTypeName", - "src": "1019:7:7" - } - ], - "id": 858, - "name": "VariableDeclaration", - "src": "1019:24:7" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "assertionIssuer", - "scope": 866, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 859, - "name": "ElementaryTypeName", - "src": "1045:7:7" - } - ], - "id": 860, - "name": "VariableDeclaration", - "src": "1045:31:7" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "numberOfEpochs", - "scope": 866, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 861, - "name": "ElementaryTypeName", - "src": "1078:7:7" - } - ], - "id": 862, - "name": "VariableDeclaration", - "src": "1078:22:7" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "assertionTimeToLive", - "scope": 866, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 863, - "name": "ElementaryTypeName", - "src": "1102:7:7" - } - ], - "id": 864, - "name": "VariableDeclaration", - "src": "1102:27:7" - } - ], - "id": 865, - "name": "ParameterList", - "src": "989:141:7" - } - ], - "id": 866, - "name": "EventDefinition", - "src": "967:164:7" - }, - { - "attributes": { - "anonymous": false, - "name": "TokensCollected" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "assertionID", - "scope": 876, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 867, - "name": "ElementaryTypeName", - "src": "1155:7:7" - } - ], - "id": 868, - "name": "VariableDeclaration", - "src": "1155:27:7" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "prover", - "scope": 876, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 869, - "name": "ElementaryTypeName", - "src": "1184:7:7" - } - ], - "id": 870, - "name": "VariableDeclaration", - "src": "1184:22:7" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "epoch", - "scope": 876, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 871, - "name": "ElementaryTypeName", - "src": "1208:7:7" - } - ], - "id": 872, - "name": "VariableDeclaration", - "src": "1208:21:7" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "scope": 876, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 873, - "name": "ElementaryTypeName", - "src": "1231:7:7" - } - ], - "id": 874, - "name": "VariableDeclaration", - "src": "1231:14:7" - } - ], - "id": 875, - "name": "ParameterList", - "src": "1154:92:7" - } - ], - "id": 876, - "name": "EventDefinition", - "src": "1133:114:7" - }, - { - "attributes": { - "anonymous": false, - "name": "VerificationFailed" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "assertionID", - "scope": 884, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 877, - "name": "ElementaryTypeName", - "src": "1274:7:7" - } - ], - "id": 878, - "name": "VariableDeclaration", - "src": "1274:27:7" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "prover", - "scope": 884, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 879, - "name": "ElementaryTypeName", - "src": "1303:7:7" - } - ], - "id": 880, - "name": "VariableDeclaration", - "src": "1303:22:7" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "epoch", - "scope": 884, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 881, - "name": "ElementaryTypeName", - "src": "1327:7:7" - } - ], - "id": 882, - "name": "VariableDeclaration", - "src": "1327:21:7" - } - ], - "id": 883, - "name": "ParameterList", - "src": "1273:76:7" - } - ], - "id": 884, - "name": "EventDefinition", - "src": "1249:101:7" - }, - { - "attributes": { - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [ - null - ], - "name": "", - "scope": 1138, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "token_address", - "scope": 913, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 885, - "name": "ElementaryTypeName", - "src": "1367:7:7" - } - ], - "id": 886, - "name": "VariableDeclaration", - "src": "1367:21:7" - } - ], - "id": 887, - "name": "ParameterList", - "src": "1366:23:7" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 888, - "name": "ParameterList", - "src": "1398:0:7" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool) pure", - "value": "require" - }, - "id": 889, - "name": "Identifier", - "src": "1402:7:7" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 886, - "type": "address", - "value": "token_address" - }, - "id": 890, - "name": "Identifier", - "src": "1410:13:7" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 891, - "name": "ElementaryTypeName", - "src": "1425:7:7" - } - ], - "id": 892, - "name": "ElementaryTypeNameExpression", - "src": "1425:7:7" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 893, - "name": "Literal", - "src": "1433:1:7" - } - ], - "id": 894, - "name": "FunctionCall", - "src": "1425:10:7" - } - ], - "id": 895, - "name": "BinaryOperation", - "src": "1410:25:7" - } - ], - "id": 896, - "name": "FunctionCall", - "src": "1402:34:7" - } - ], - "id": 897, - "name": "ExpressionStatement", - "src": "1402:34:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "contract IERC20" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 827, - "type": "contract IERC20", - "value": "token" - }, - "id": 898, - "name": "Identifier", - "src": "1440:5:7" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "contract IERC20", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 676, - "type": "type(contract IERC20)", - "value": "IERC20" - }, - "id": 899, - "name": "Identifier", - "src": "1448:6:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 886, - "type": "address", - "value": "token_address" - }, - "id": 900, - "name": "Identifier", - "src": "1455:13:7" - } - ], - "id": 901, - "name": "FunctionCall", - "src": "1448:21:7" - } - ], - "id": 902, - "name": "Assignment", - "src": "1440:29:7" - } - ], - "id": 903, - "name": "ExpressionStatement", - "src": "1440:29:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 829, - "type": "address", - "value": "TRAC_TOKEN_ADDRESS" - }, - "id": 904, - "name": "Identifier", - "src": "1473:18:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 886, - "type": "address", - "value": "token_address" - }, - "id": 905, - "name": "Identifier", - "src": "1494:13:7" - } - ], - "id": 906, - "name": "Assignment", - "src": "1473:34:7" - } - ], - "id": 907, - "name": "ExpressionStatement", - "src": "1473:34:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 854, - "type": "function (address)", - "value": "TokenAddressSet" - }, - "id": 908, - "name": "Identifier", - "src": "1519:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 886, - "type": "address", - "value": "token_address" - }, - "id": 909, - "name": "Identifier", - "src": "1535:13:7" - } - ], - "id": 910, - "name": "FunctionCall", - "src": "1519:30:7" - } - ], - "id": 911, - "name": "EmitStatement", - "src": "1514:35:7" - } - ], - "id": 912, - "name": "Block", - "src": "1398:156:7" - } - ], - "id": 913, - "name": "FunctionDefinition", - "src": "1355:199:7" - }, - { - "attributes": { - "functionSelector": "f164c436", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "createAssertionRecord", - "scope": 1138, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionID", - "scope": 1015, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 914, - "name": "ElementaryTypeName", - "src": "1598:7:7" - } - ], - "id": 915, - "name": "VariableDeclaration", - "src": "1598:19:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "rootHash", - "scope": 1015, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 916, - "name": "ElementaryTypeName", - "src": "1619:7:7" - } - ], - "id": 917, - "name": "VariableDeclaration", - "src": "1619:16:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "issuer", - "scope": 1015, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 918, - "name": "ElementaryTypeName", - "src": "1637:7:7" - } - ], - "id": 919, - "name": "VariableDeclaration", - "src": "1637:14:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "numberOfEpochs", - "scope": 1015, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 920, - "name": "ElementaryTypeName", - "src": "1653:7:7" - } - ], - "id": 921, - "name": "VariableDeclaration", - "src": "1653:22:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionTimeToLive", - "scope": 1015, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 922, - "name": "ElementaryTypeName", - "src": "1677:7:7" - } - ], - "id": 923, - "name": "VariableDeclaration", - "src": "1677:27:7" - } - ], - "id": 924, - "name": "ParameterList", - "src": "1597:108:7" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 925, - "name": "ParameterList", - "src": "1713:0:7" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_649a3d58a096eb864e1646a68edf6e493c6de795be271ef6a8cd2b478518591c", - "typeString": "literal_string \"assertionID hash cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 926, - "name": "Identifier", - "src": "1717:7:7" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 927, - "name": "Identifier", - "src": "1725:11:7" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 928, - "name": "Literal", - "src": "1740:1:7" - } - ], - "id": 929, - "name": "BinaryOperation", - "src": "1725:16:7" - }, - { - "attributes": { - "hexvalue": "617373657274696f6e494420686173682063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"assertionID hash cannot be zero\"", - "value": "assertionID hash cannot be zero" - }, - "id": 930, - "name": "Literal", - "src": "1743:33:7" - } - ], - "id": 931, - "name": "FunctionCall", - "src": "1717:60:7" - } - ], - "id": 932, - "name": "ExpressionStatement", - "src": "1717:60:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_224e5e3aafad117a551900ad41b6b8fd4124c64978d6cb6f2d999d30b5a7caf6", - "typeString": "literal_string \"rootHash hash cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 933, - "name": "Identifier", - "src": "1781:7:7" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 917, - "type": "bytes32", - "value": "rootHash" - }, - "id": 934, - "name": "Identifier", - "src": "1789:8:7" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 935, - "name": "Literal", - "src": "1801:1:7" - } - ], - "id": 936, - "name": "BinaryOperation", - "src": "1789:13:7" - }, - { - "attributes": { - "hexvalue": "726f6f744861736820686173682063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"rootHash hash cannot be zero\"", - "value": "rootHash hash cannot be zero" - }, - "id": 937, - "name": "Literal", - "src": "1804:30:7" - } - ], - "id": 938, - "name": "FunctionCall", - "src": "1781:54:7" - } - ], - "id": 939, - "name": "ExpressionStatement", - "src": "1781:54:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fa4af5b2a5d3b443608ae031fd9009eab2ce4cb844577b417eed67d3d60328f1", - "typeString": "literal_string \"numberOfEpochs hash cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 940, - "name": "Identifier", - "src": "1839:7:7" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 921, - "type": "uint256", - "value": "numberOfEpochs" - }, - "id": 941, - "name": "Identifier", - "src": "1847:14:7" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 942, - "name": "Literal", - "src": "1865:1:7" - } - ], - "id": 943, - "name": "BinaryOperation", - "src": "1847:19:7" - }, - { - "attributes": { - "hexvalue": "6e756d6265724f6645706f63687320686173682063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"numberOfEpochs hash cannot be zero\"", - "value": "numberOfEpochs hash cannot be zero" - }, - "id": 944, - "name": "Literal", - "src": "1868:36:7" - } - ], - "id": 945, - "name": "FunctionCall", - "src": "1839:66:7" - } - ], - "id": 946, - "name": "ExpressionStatement", - "src": "1839:66:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_069e2edd21d0b2ae0e0fdeacec1cd50fed913131221cbb295c527db83a0001af", - "typeString": "literal_string \"assertionTimeToLive hash cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 947, - "name": "Identifier", - "src": "1909:7:7" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 923, - "type": "uint256", - "value": "assertionTimeToLive" - }, - "id": 948, - "name": "Identifier", - "src": "1917:19:7" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 949, - "name": "Literal", - "src": "1940:1:7" - } - ], - "id": 950, - "name": "BinaryOperation", - "src": "1917:24:7" - }, - { - "attributes": { - "hexvalue": "617373657274696f6e54696d65546f4c69766520686173682063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"assertionTimeToLive hash cannot be zero\"", - "value": "assertionTimeToLive hash cannot be zero" - }, - "id": 951, - "name": "Literal", - "src": "1943:41:7" - } - ], - "id": 952, - "name": "FunctionCall", - "src": "1909:76:7" - } - ], - "id": 953, - "name": "ExpressionStatement", - "src": "1909:76:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_533fbfe4d9ec6c5b4aac3ac2c85a5993318086c6dfacddd0ec06ea4b669082d1", - "typeString": "literal_string \"Assertion already exists!\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 954, - "name": "Identifier", - "src": "1989:7:7" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "creationTime", - "referencedDeclaration": 835, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 955, - "name": "Identifier", - "src": "1997:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 956, - "name": "Identifier", - "src": "2013:11:7" - } - ], - "id": 957, - "name": "IndexAccess", - "src": "1997:28:7" - } - ], - "id": 958, - "name": "MemberAccess", - "src": "1997:41:7" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 959, - "name": "Literal", - "src": "2040:1:7" - } - ], - "id": 960, - "name": "BinaryOperation", - "src": "1997:44:7" - }, - { - "attributes": { - "hexvalue": "417373657274696f6e20616c72656164792065786973747321", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"Assertion already exists!\"", - "value": "Assertion already exists!" - }, - "id": 961, - "name": "Literal", - "src": "2043:27:7" - } - ], - "id": 962, - "name": "FunctionCall", - "src": "1989:82:7" - } - ], - "id": 963, - "name": "ExpressionStatement", - "src": "1989:82:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "numberOfEpochs", - "referencedDeclaration": 833, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 964, - "name": "Identifier", - "src": "2129:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 965, - "name": "Identifier", - "src": "2145:11:7" - } - ], - "id": 966, - "name": "IndexAccess", - "src": "2129:28:7" - } - ], - "id": 967, - "name": "MemberAccess", - "src": "2129:43:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 921, - "type": "uint256", - "value": "numberOfEpochs" - }, - "id": 968, - "name": "Identifier", - "src": "2175:14:7" - } - ], - "id": 969, - "name": "Assignment", - "src": "2129:60:7" - } - ], - "id": 970, - "name": "ExpressionStatement", - "src": "2129:60:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "assertionTimeToLive", - "referencedDeclaration": 831, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 971, - "name": "Identifier", - "src": "2193:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 972, - "name": "Identifier", - "src": "2209:11:7" - } - ], - "id": 973, - "name": "IndexAccess", - "src": "2193:28:7" - } - ], - "id": 974, - "name": "MemberAccess", - "src": "2193:48:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 923, - "type": "uint256", - "value": "assertionTimeToLive" - }, - "id": 975, - "name": "Identifier", - "src": "2244:19:7" - } - ], - "id": 976, - "name": "Assignment", - "src": "2193:70:7" - } - ], - "id": 977, - "name": "ExpressionStatement", - "src": "2193:70:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "creationTime", - "referencedDeclaration": 835, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 978, - "name": "Identifier", - "src": "2267:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 979, - "name": "Identifier", - "src": "2283:11:7" - } - ], - "id": 980, - "name": "IndexAccess", - "src": "2267:28:7" - } - ], - "id": 981, - "name": "MemberAccess", - "src": "2267:41:7" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967292, - "type": "block", - "value": "block" - }, - "id": 982, - "name": "Identifier", - "src": "2311:5:7" - } - ], - "id": 983, - "name": "MemberAccess", - "src": "2311:15:7" - } - ], - "id": 984, - "name": "Assignment", - "src": "2267:59:7" - } - ], - "id": 985, - "name": "ExpressionStatement", - "src": "2267:59:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "rootHash", - "referencedDeclaration": 839, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 986, - "name": "Identifier", - "src": "2330:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 987, - "name": "Identifier", - "src": "2346:11:7" - } - ], - "id": 988, - "name": "IndexAccess", - "src": "2330:28:7" - } - ], - "id": 989, - "name": "MemberAccess", - "src": "2330:37:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 917, - "type": "bytes32", - "value": "rootHash" - }, - "id": 990, - "name": "Identifier", - "src": "2370:8:7" - } - ], - "id": 991, - "name": "Assignment", - "src": "2330:48:7" - } - ], - "id": 992, - "name": "ExpressionStatement", - "src": "2330:48:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "issuer", - "referencedDeclaration": 837, - "type": "address" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 993, - "name": "Identifier", - "src": "2382:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 994, - "name": "Identifier", - "src": "2398:11:7" - } - ], - "id": 995, - "name": "IndexAccess", - "src": "2382:28:7" - } - ], - "id": 996, - "name": "MemberAccess", - "src": "2382:35:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 919, - "type": "address", - "value": "issuer" - }, - "id": 997, - "name": "Identifier", - "src": "2420:6:7" - } - ], - "id": 998, - "name": "Assignment", - "src": "2382:44:7" - } - ], - "id": 999, - "name": "ExpressionStatement", - "src": "2382:44:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 850, - "type": "mapping(bytes32 => address)", - "value": "assertionIssuer" - }, - "id": 1000, - "name": "Identifier", - "src": "2430:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1001, - "name": "Identifier", - "src": "2446:11:7" - } - ], - "id": 1002, - "name": "IndexAccess", - "src": "2430:28:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 919, - "type": "address", - "value": "issuer" - }, - "id": 1003, - "name": "Identifier", - "src": "2461:6:7" - } - ], - "id": 1004, - "name": "Assignment", - "src": "2430:37:7" - } - ], - "id": 1005, - "name": "ExpressionStatement", - "src": "2430:37:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 866, - "type": "function (bytes32,bytes32,address,uint256,uint256)", - "value": "AssertionCreated" - }, - "id": 1006, - "name": "Identifier", - "src": "2477:16:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 915, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1007, - "name": "Identifier", - "src": "2494:11:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 917, - "type": "bytes32", - "value": "rootHash" - }, - "id": 1008, - "name": "Identifier", - "src": "2506:8:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 919, - "type": "address", - "value": "issuer" - }, - "id": 1009, - "name": "Identifier", - "src": "2515:6:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 921, - "type": "uint256", - "value": "numberOfEpochs" - }, - "id": 1010, - "name": "Identifier", - "src": "2522:14:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 923, - "type": "uint256", - "value": "assertionTimeToLive" - }, - "id": 1011, - "name": "Identifier", - "src": "2537:19:7" - } - ], - "id": 1012, - "name": "FunctionCall", - "src": "2477:80:7" - } - ], - "id": 1013, - "name": "EmitStatement", - "src": "2472:85:7" - } - ], - "id": 1014, - "name": "Block", - "src": "1713:848:7" - } - ], - "id": 1015, - "name": "FunctionDefinition", - "src": "1567:994:7" - }, - { - "attributes": { - "functionSelector": "ce64c643", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "submitHoldingProof", - "scope": 1138, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionID", - "scope": 1061, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1016, - "name": "ElementaryTypeName", - "src": "2604:7:7" - } - ], - "id": 1017, - "name": "VariableDeclaration", - "src": "2604:19:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "epochAssertionProof", - "scope": 1061, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1018, - "name": "ElementaryTypeName", - "src": "2625:7:7" - } - ], - "id": 1019, - "name": "VariableDeclaration", - "src": "2625:27:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "epochNumber", - "scope": 1061, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1020, - "name": "ElementaryTypeName", - "src": "2654:7:7" - } - ], - "id": 1021, - "name": "VariableDeclaration", - "src": "2654:19:7" - } - ], - "id": 1022, - "name": "ParameterList", - "src": "2603:71:7" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 1023, - "name": "ParameterList", - "src": "2684:0:7" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_649a3d58a096eb864e1646a68edf6e493c6de795be271ef6a8cd2b478518591c", - "typeString": "literal_string \"assertionID hash cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1024, - "name": "Identifier", - "src": "2688:7:7" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1017, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1025, - "name": "Identifier", - "src": "2696:11:7" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1026, - "name": "Literal", - "src": "2711:1:7" - } - ], - "id": 1027, - "name": "BinaryOperation", - "src": "2696:16:7" - }, - { - "attributes": { - "hexvalue": "617373657274696f6e494420686173682063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"assertionID hash cannot be zero\"", - "value": "assertionID hash cannot be zero" - }, - "id": 1028, - "name": "Literal", - "src": "2714:33:7" - } - ], - "id": 1029, - "name": "FunctionCall", - "src": "2688:60:7" - } - ], - "id": 1030, - "name": "ExpressionStatement", - "src": "2688:60:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_51a89ccd247a0e5232bbda470ea88b3fa7ebe5c9c4e686866df3ae98cc738613", - "typeString": "literal_string \"epochAssertionProof hash cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1031, - "name": "Identifier", - "src": "2752:7:7" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1019, - "type": "bytes32", - "value": "epochAssertionProof" - }, - "id": 1032, - "name": "Identifier", - "src": "2760:19:7" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1033, - "name": "Literal", - "src": "2783:1:7" - } - ], - "id": 1034, - "name": "BinaryOperation", - "src": "2760:24:7" - }, - { - "attributes": { - "hexvalue": "65706f6368417373657274696f6e50726f6f6620686173682063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"epochAssertionProof hash cannot be zero\"", - "value": "epochAssertionProof hash cannot be zero" - }, - "id": 1035, - "name": "Literal", - "src": "2786:41:7" - } - ], - "id": 1036, - "name": "FunctionCall", - "src": "2752:76:7" - } - ], - "id": 1037, - "name": "ExpressionStatement", - "src": "2752:76:7" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1073, - "type": "function (bytes32,bytes32) returns (bool)", - "value": "verifyAssertionProof" - }, - "id": 1038, - "name": "Identifier", - "src": "2837:20:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1017, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1039, - "name": "Identifier", - "src": "2858:11:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1019, - "type": "bytes32", - "value": "epochAssertionProof" - }, - "id": 1040, - "name": "Identifier", - "src": "2871:19:7" - } - ], - "id": 1041, - "name": "FunctionCall", - "src": "2837:54:7" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_123_by_1", - "typeString": "int_const 123" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 876, - "type": "function (bytes32,address,uint256,uint256)", - "value": "TokensCollected" - }, - "id": 1042, - "name": "Identifier", - "src": "2902:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1017, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1043, - "name": "Identifier", - "src": "2918:11:7" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1044, - "name": "Identifier", - "src": "2930:3:7" - } - ], - "id": 1045, - "name": "MemberAccess", - "src": "2930:10:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1021, - "type": "uint256", - "value": "epochNumber" - }, - "id": 1046, - "name": "Identifier", - "src": "2941:11:7" - }, - { - "attributes": { - "hexvalue": "313233", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 123", - "value": "123" - }, - "id": 1047, - "name": "Literal", - "src": "2954:3:7" - } - ], - "id": 1048, - "name": "FunctionCall", - "src": "2902:56:7" - } - ], - "id": 1049, - "name": "EmitStatement", - "src": "2897:61:7" - } - ], - "id": 1050, - "name": "Block", - "src": "2892:72:7" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 884, - "type": "function (bytes32,address,uint256)", - "value": "VerificationFailed" - }, - "id": 1051, - "name": "Identifier", - "src": "2981:18:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1017, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1052, - "name": "Identifier", - "src": "3000:11:7" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1053, - "name": "Identifier", - "src": "3012:3:7" - } - ], - "id": 1054, - "name": "MemberAccess", - "src": "3012:10:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1021, - "type": "uint256", - "value": "epochNumber" - }, - "id": 1055, - "name": "Identifier", - "src": "3023:11:7" - } - ], - "id": 1056, - "name": "FunctionCall", - "src": "2981:54:7" - } - ], - "id": 1057, - "name": "EmitStatement", - "src": "2976:59:7" - } - ], - "id": 1058, - "name": "Block", - "src": "2970:71:7" - } - ], - "id": 1059, - "name": "IfStatement", - "src": "2833:208:7" - } - ], - "id": 1060, - "name": "Block", - "src": "2684:361:7" - } - ], - "id": 1061, - "name": "FunctionDefinition", - "src": "2576:469:7" - }, - { - "attributes": { - "functionSelector": "193f9c7e", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "verifyAssertionProof", - "scope": 1138, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionID", - "scope": 1073, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1062, - "name": "ElementaryTypeName", - "src": "3080:7:7" - } - ], - "id": 1063, - "name": "VariableDeclaration", - "src": "3080:19:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "epochAssertionProof", - "scope": 1073, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1064, - "name": "ElementaryTypeName", - "src": "3101:7:7" - } - ], - "id": 1065, - "name": "VariableDeclaration", - "src": "3101:27:7" - } - ], - "id": 1066, - "name": "ParameterList", - "src": "3079:50:7" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "proofValid", - "scope": 1073, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1067, - "name": "ElementaryTypeName", - "src": "3148:4:7" - } - ], - "id": 1068, - "name": "VariableDeclaration", - "src": "3148:15:7" - } - ], - "id": 1069, - "name": "ParameterList", - "src": "3147:17:7" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1069 - }, - "children": [ - { - "attributes": { - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 1070, - "name": "Literal", - "src": "3175:4:7" - } - ], - "id": 1071, - "name": "Return", - "src": "3168:11:7" - } - ], - "id": 1072, - "name": "Block", - "src": "3164:20:7" - } - ], - "id": 1073, - "name": "FunctionDefinition", - "src": "3050:134:7" - }, - { - "attributes": { - "functionSelector": "0828e9f3", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssertionIssuer", - "scope": 1138, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionID", - "scope": 1085, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1074, - "name": "ElementaryTypeName", - "src": "3217:7:7" - } - ], - "id": 1075, - "name": "VariableDeclaration", - "src": "3217:19:7" - } - ], - "id": 1076, - "name": "ParameterList", - "src": "3216:21:7" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "creator", - "scope": 1085, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1077, - "name": "ElementaryTypeName", - "src": "3259:7:7" - } - ], - "id": 1078, - "name": "VariableDeclaration", - "src": "3259:15:7" - } - ], - "id": 1079, - "name": "ParameterList", - "src": "3258:17:7" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1079 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 850, - "type": "mapping(bytes32 => address)", - "value": "assertionIssuer" - }, - "id": 1080, - "name": "Identifier", - "src": "3286:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1075, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1081, - "name": "Identifier", - "src": "3302:11:7" - } - ], - "id": 1082, - "name": "IndexAccess", - "src": "3286:28:7" - } - ], - "id": 1083, - "name": "Return", - "src": "3279:35:7" - } - ], - "id": 1084, - "name": "Block", - "src": "3275:43:7" - } - ], - "id": 1085, - "name": "FunctionDefinition", - "src": "3189:129:7" - }, - { - "attributes": { - "functionSelector": "b934b4e4", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssertionRootHash", - "scope": 1138, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionID", - "scope": 1098, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1086, - "name": "ElementaryTypeName", - "src": "3350:7:7" - } - ], - "id": 1087, - "name": "VariableDeclaration", - "src": "3350:19:7" - } - ], - "id": 1088, - "name": "ParameterList", - "src": "3349:21:7" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "rootHash", - "scope": 1098, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1089, - "name": "ElementaryTypeName", - "src": "3392:7:7" - } - ], - "id": 1090, - "name": "VariableDeclaration", - "src": "3392:16:7" - } - ], - "id": 1091, - "name": "ParameterList", - "src": "3391:18:7" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1091 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "rootHash", - "referencedDeclaration": 839, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 1092, - "name": "Identifier", - "src": "3420:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1087, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1093, - "name": "Identifier", - "src": "3436:11:7" - } - ], - "id": 1094, - "name": "IndexAccess", - "src": "3420:28:7" - } - ], - "id": 1095, - "name": "MemberAccess", - "src": "3420:37:7" - } - ], - "id": 1096, - "name": "Return", - "src": "3413:44:7" - } - ], - "id": 1097, - "name": "Block", - "src": "3409:52:7" - } - ], - "id": 1098, - "name": "FunctionDefinition", - "src": "3320:141:7" - }, - { - "attributes": { - "functionSelector": "6988bc03", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssertionTimeToLive", - "scope": 1138, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionID", - "scope": 1111, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1099, - "name": "ElementaryTypeName", - "src": "3495:7:7" - } - ], - "id": 1100, - "name": "VariableDeclaration", - "src": "3495:19:7" - } - ], - "id": 1101, - "name": "ParameterList", - "src": "3494:21:7" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "timeToLive", - "scope": 1111, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1102, - "name": "ElementaryTypeName", - "src": "3537:7:7" - } - ], - "id": 1103, - "name": "VariableDeclaration", - "src": "3537:18:7" - } - ], - "id": 1104, - "name": "ParameterList", - "src": "3536:20:7" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1104 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "assertionTimeToLive", - "referencedDeclaration": 831, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 1105, - "name": "Identifier", - "src": "3567:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1100, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1106, - "name": "Identifier", - "src": "3583:11:7" - } - ], - "id": 1107, - "name": "IndexAccess", - "src": "3567:28:7" - } - ], - "id": 1108, - "name": "MemberAccess", - "src": "3567:48:7" - } - ], - "id": 1109, - "name": "Return", - "src": "3560:55:7" - } - ], - "id": 1110, - "name": "Block", - "src": "3556:63:7" - } - ], - "id": 1111, - "name": "FunctionDefinition", - "src": "3463:156:7" - }, - { - "attributes": { - "functionSelector": "9e50e72c", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssertionNumberOfEpochs", - "scope": 1138, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionID", - "scope": 1124, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1112, - "name": "ElementaryTypeName", - "src": "3657:7:7" - } - ], - "id": 1113, - "name": "VariableDeclaration", - "src": "3657:19:7" - } - ], - "id": 1114, - "name": "ParameterList", - "src": "3656:21:7" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "numberOfEpochs", - "scope": 1124, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1115, - "name": "ElementaryTypeName", - "src": "3699:7:7" - } - ], - "id": 1116, - "name": "VariableDeclaration", - "src": "3699:22:7" - } - ], - "id": 1117, - "name": "ParameterList", - "src": "3698:24:7" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1117 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "numberOfEpochs", - "referencedDeclaration": 833, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct DKGcontract.AssertionRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 846, - "type": "mapping(bytes32 => struct DKGcontract.AssertionRecord storage ref)", - "value": "assertionRecord" - }, - "id": 1118, - "name": "Identifier", - "src": "3733:15:7" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1113, - "type": "bytes32", - "value": "assertionID" - }, - "id": 1119, - "name": "Identifier", - "src": "3749:11:7" - } - ], - "id": 1120, - "name": "IndexAccess", - "src": "3733:28:7" - } - ], - "id": 1121, - "name": "MemberAccess", - "src": "3733:43:7" - } - ], - "id": 1122, - "name": "Return", - "src": "3726:50:7" - } - ], - "id": 1123, - "name": "Block", - "src": "3722:58:7" - } - ], - "id": 1124, - "name": "FunctionDefinition", - "src": "3621:159:7" - }, - { - "attributes": { - "functionSelector": "08c4933b", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssertionTask", - "scope": 1138, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionID", - "scope": 1137, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1125, - "name": "ElementaryTypeName", - "src": "3809:7:7" - } - ], - "id": 1126, - "name": "VariableDeclaration", - "src": "3809:19:7" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "epoch", - "scope": 1137, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1127, - "name": "ElementaryTypeName", - "src": "3830:7:7" - } - ], - "id": 1128, - "name": "VariableDeclaration", - "src": "3830:13:7" - } - ], - "id": 1129, - "name": "ParameterList", - "src": "3808:36:7" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "task", - "scope": 1137, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1130, - "name": "ElementaryTypeName", - "src": "3866:7:7" - } - ], - "id": 1131, - "name": "VariableDeclaration", - "src": "3866:12:7" - } - ], - "id": 1132, - "name": "ParameterList", - "src": "3865:14:7" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1132 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967292, - "type": "block", - "value": "block" - }, - "id": 1133, - "name": "Identifier", - "src": "3890:5:7" - } - ], - "id": 1134, - "name": "MemberAccess", - "src": "3890:12:7" - } - ], - "id": 1135, - "name": "Return", - "src": "3883:19:7" - } - ], - "id": 1136, - "name": "Block", - "src": "3879:27:7" - } - ], - "id": 1137, - "name": "FunctionDefinition", - "src": "3783:123:7" - } - ], - "id": 1138, - "name": "ContractDefinition", - "src": "286:3623:7" - } - ], - "id": 1139, - "name": "SourceUnit", - "src": "0:3909:7" - }, - "compiler": { - "name": "solc", - "version": "0.7.6+commit.7338295f.Emscripten.clang" - }, - "networks": { - "5777": { - "events": { - "0x25e2604032d2f5a218a9bed084fc10fd98b83e3b86a79ba39c21409598425016": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "rootHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "assertionIssuer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "numberOfEpochs", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "assertionTimeToLive", - "type": "uint256" - } - ], - "name": "AssertionCreated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xd82cad5fdc98633445b90f806f2e1a61a5409f92187ee9cd87f1da18c9069266": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - } - ], - "name": "TokenAddressSet", - "type": "event" - }, - "0xce001fcd900079c312eaa96f5c1c389ffe207eb41e90197f5a011668b58ef598": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "prover", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "epoch", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "TokensCollected", - "type": "event" - }, - "0x37d4188105d31e43e2177257c4e9cc2c8eda5c0783943eb00abe942ac687b03a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "prover", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "epoch", - "type": "uint256" - } - ], - "name": "VerificationFailed", - "type": "event" - } - }, - "links": {}, - "address": "0xF21dD87cFC5cF5D073398833AFe5EFC543b78a00", - "transactionHash": "0x40a53672d00490972d444552be6eba8c4a68ce5ecad3d3acaad9228ba9a4e35b" - }, - "80001": { - "events": { - "0x25e2604032d2f5a218a9bed084fc10fd98b83e3b86a79ba39c21409598425016": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "rootHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "assertionIssuer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "numberOfEpochs", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "assertionTimeToLive", - "type": "uint256" - } - ], - "name": "AssertionCreated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xd82cad5fdc98633445b90f806f2e1a61a5409f92187ee9cd87f1da18c9069266": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - } - ], - "name": "TokenAddressSet", - "type": "event" - }, - "0xce001fcd900079c312eaa96f5c1c389ffe207eb41e90197f5a011668b58ef598": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "prover", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "epoch", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "TokensCollected", - "type": "event" - }, - "0x37d4188105d31e43e2177257c4e9cc2c8eda5c0783943eb00abe942ac687b03a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "prover", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "epoch", - "type": "uint256" - } - ], - "name": "VerificationFailed", - "type": "event" - } - }, - "links": {}, - "address": "0xEd8ecA1917F586B67D2fB88930002E60828958a6", - "transactionHash": "0x130e35fb264aec93b34330b463b8bcc846c5f926a9df3326a6a7ca3fe0fd0831" - } - }, - "schemaVersion": "3.4.3", - "updatedAt": "2022-02-11T10:13:46.687Z", - "networkType": "ethereum", - "devdoc": { - "kind": "dev", - "methods": { - "owner()": { - "details": "Returns the address of the current owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." - }, - "transferOwnership(address)": { - "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/build/contracts/IERC20.json b/build/contracts/IERC20.json deleted file mode 100644 index 35bb29337..000000000 --- a/build/contracts/IERC20.json +++ /dev/null @@ -1,2190 +0,0 @@ -{ - "contractName": "IERC20", - "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": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "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": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.6.10+commit.00c0fcaf\"},\"language\":\"Solidity\",\"output\":{\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"methods\":{\"allowance(address,address)\":{\"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.\"},\"approve(address,uint256)\":{\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` 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.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]}},\"version\":1}", - "bytecode": "0x", - "deployedBytecode": "0x", - "immutableReferences": {}, - "sourceMap": "", - "deployedSourceMap": "", - "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @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 *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\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 *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n", - "sourcePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "ast": { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "exportedSymbols": { - "IERC20": [ - 542 - ] - }, - "id": 543, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 466, - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "33:31:2" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 467, - "nodeType": "StructuredDocumentation", - "src": "66:70:2", - "text": " @dev Interface of the ERC20 standard as defined in the EIP." - }, - "fullyImplemented": false, - "id": 542, - "linearizedBaseContracts": [ - 542 - ], - "name": "IERC20", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": { - "id": 468, - "nodeType": "StructuredDocumentation", - "src": "160:66:2", - "text": " @dev Returns the amount of tokens in existence." - }, - "functionSelector": "18160ddd", - "id": 473, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "totalSupply", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 469, - "nodeType": "ParameterList", - "parameters": [], - "src": "251:2:2" - }, - "returnParameters": { - "id": 472, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 471, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 473, - "src": "277:7:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 470, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "277:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "276:9:2" - }, - "scope": 542, - "src": "231:55:2", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "body": null, - "documentation": { - "id": 474, - "nodeType": "StructuredDocumentation", - "src": "292:72:2", - "text": " @dev Returns the amount of tokens owned by `account`." - }, - "functionSelector": "70a08231", - "id": 481, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 477, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 476, - "mutability": "mutable", - "name": "account", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 481, - "src": "388:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 475, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "388:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "387:17:2" - }, - "returnParameters": { - "id": 480, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 479, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 481, - "src": "428:7:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 478, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "428:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "427:9:2" - }, - "scope": 542, - "src": "369:68:2", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "body": null, - "documentation": { - "id": 482, - "nodeType": "StructuredDocumentation", - "src": "443:209:2", - "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." - }, - "functionSelector": "a9059cbb", - "id": 491, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 487, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 484, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 491, - "src": "675:17:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 483, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "675:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 486, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 491, - "src": "694:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 485, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "694:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "674:35:2" - }, - "returnParameters": { - "id": 490, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 489, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 491, - "src": "728:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 488, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "728:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "727:6:2" - }, - "scope": 542, - "src": "657:77:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": null, - "documentation": { - "id": 492, - "nodeType": "StructuredDocumentation", - "src": "740:264:2", - "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": 501, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 497, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 494, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 501, - "src": "1028:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 493, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1028:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 496, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 501, - "src": "1043:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 495, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1043:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1027:32:2" - }, - "returnParameters": { - "id": 500, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 499, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 501, - "src": "1083:7:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 498, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1083:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1082:9:2" - }, - "scope": 542, - "src": "1009:83:2", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "body": null, - "documentation": { - "id": 502, - "nodeType": "StructuredDocumentation", - "src": "1098:642:2", - "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": 511, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 507, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 504, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 511, - "src": "1762:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 503, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1762:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 506, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 511, - "src": "1779:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 505, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1779:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1761:33:2" - }, - "returnParameters": { - "id": 510, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 509, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 511, - "src": "1813:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 508, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1813:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1812:6:2" - }, - "scope": 542, - "src": "1745:74:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": null, - "documentation": { - "id": 512, - "nodeType": "StructuredDocumentation", - "src": "1825:296:2", - "text": " @dev Moves `amount` tokens from `sender` to `recipient` 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": 523, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 519, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 514, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 523, - "src": "2148:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 513, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2148:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 516, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 523, - "src": "2164:17:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 515, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2164:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 518, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 523, - "src": "2183:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 517, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2183:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2147:51:2" - }, - "returnParameters": { - "id": 522, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 521, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 523, - "src": "2217:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 520, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2217:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2216:6:2" - }, - "scope": 542, - "src": "2126:97:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": { - "id": 524, - "nodeType": "StructuredDocumentation", - "src": "2229:158:2", - "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." - }, - "id": 532, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 531, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 526, - "indexed": true, - "mutability": "mutable", - "name": "from", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 532, - "src": "2407:20:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 525, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2407:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 528, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 532, - "src": "2429:18:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 527, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2429:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 530, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 532, - "src": "2449:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 529, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2449:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2406:57:2" - }, - "src": "2392:72:2" - }, - { - "anonymous": false, - "documentation": { - "id": 533, - "nodeType": "StructuredDocumentation", - "src": "2470:148:2", - "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." - }, - "id": 541, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 540, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 535, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 541, - "src": "2638:21:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 534, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2638:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 537, - "indexed": true, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 541, - "src": "2661:23:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 536, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2661:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 539, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 541, - "src": "2686:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 538, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2686:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2637:63:2" - }, - "src": "2623:78:2" - } - ], - "scope": 543, - "src": "137:2566:2" - } - ], - "src": "33:2671:2" - }, - "legacyAST": { - "attributes": { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "exportedSymbols": { - "IERC20": [ - 542 - ] - }, - "license": "MIT" - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ] - }, - "id": 466, - "name": "PragmaDirective", - "src": "33:31:2" - }, - { - "attributes": { - "abstract": false, - "baseContracts": [ - null - ], - "contractDependencies": [ - null - ], - "contractKind": "interface", - "fullyImplemented": false, - "linearizedBaseContracts": [ - 542 - ], - "name": "IERC20", - "scope": 543 - }, - "children": [ - { - "attributes": { - "text": " @dev Interface of the ERC20 standard as defined in the EIP." - }, - "id": 467, - "name": "StructuredDocumentation", - "src": "66:70:2" - }, - { - "attributes": { - "body": null, - "functionSelector": "18160ddd", - "implemented": false, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "totalSupply", - "overrides": null, - "scope": 542, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the amount of tokens in existence." - }, - "id": 468, - "name": "StructuredDocumentation", - "src": "160:66:2" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 469, - "name": "ParameterList", - "src": "251:2:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 473, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 470, - "name": "ElementaryTypeName", - "src": "277:7:2" - } - ], - "id": 471, - "name": "VariableDeclaration", - "src": "277:7:2" - } - ], - "id": 472, - "name": "ParameterList", - "src": "276:9:2" - } - ], - "id": 473, - "name": "FunctionDefinition", - "src": "231:55:2" - }, - { - "attributes": { - "body": null, - "functionSelector": "70a08231", - "implemented": false, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "balanceOf", - "overrides": null, - "scope": 542, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the amount of tokens owned by `account`." - }, - "id": 474, - "name": "StructuredDocumentation", - "src": "292:72:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "account", - "overrides": null, - "scope": 481, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 475, - "name": "ElementaryTypeName", - "src": "388:7:2" - } - ], - "id": 476, - "name": "VariableDeclaration", - "src": "388:15:2" - } - ], - "id": 477, - "name": "ParameterList", - "src": "387:17:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 481, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 478, - "name": "ElementaryTypeName", - "src": "428:7:2" - } - ], - "id": 479, - "name": "VariableDeclaration", - "src": "428:7:2" - } - ], - "id": 480, - "name": "ParameterList", - "src": "427:9:2" - } - ], - "id": 481, - "name": "FunctionDefinition", - "src": "369:68:2" - }, - { - "attributes": { - "body": null, - "functionSelector": "a9059cbb", - "implemented": false, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "transfer", - "overrides": null, - "scope": 542, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." - }, - "id": 482, - "name": "StructuredDocumentation", - "src": "443:209:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "recipient", - "overrides": null, - "scope": 491, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 483, - "name": "ElementaryTypeName", - "src": "675:7:2" - } - ], - "id": 484, - "name": "VariableDeclaration", - "src": "675:17:2" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 491, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 485, - "name": "ElementaryTypeName", - "src": "694:7:2" - } - ], - "id": 486, - "name": "VariableDeclaration", - "src": "694:14:2" - } - ], - "id": 487, - "name": "ParameterList", - "src": "674:35:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 491, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 488, - "name": "ElementaryTypeName", - "src": "728:4:2" - } - ], - "id": 489, - "name": "VariableDeclaration", - "src": "728:4:2" - } - ], - "id": 490, - "name": "ParameterList", - "src": "727:6:2" - } - ], - "id": 491, - "name": "FunctionDefinition", - "src": "657:77:2" - }, - { - "attributes": { - "body": null, - "functionSelector": "dd62ed3e", - "implemented": false, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "allowance", - "overrides": null, - "scope": 542, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "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." - }, - "id": 492, - "name": "StructuredDocumentation", - "src": "740:264:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "owner", - "overrides": null, - "scope": 501, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 493, - "name": "ElementaryTypeName", - "src": "1028:7:2" - } - ], - "id": 494, - "name": "VariableDeclaration", - "src": "1028:13:2" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "spender", - "overrides": null, - "scope": 501, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 495, - "name": "ElementaryTypeName", - "src": "1043:7:2" - } - ], - "id": 496, - "name": "VariableDeclaration", - "src": "1043:15:2" - } - ], - "id": 497, - "name": "ParameterList", - "src": "1027:32:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 501, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 498, - "name": "ElementaryTypeName", - "src": "1083:7:2" - } - ], - "id": 499, - "name": "VariableDeclaration", - "src": "1083:7:2" - } - ], - "id": 500, - "name": "ParameterList", - "src": "1082:9:2" - } - ], - "id": 501, - "name": "FunctionDefinition", - "src": "1009:83:2" - }, - { - "attributes": { - "body": null, - "functionSelector": "095ea7b3", - "implemented": false, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "approve", - "overrides": null, - "scope": 542, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "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." - }, - "id": 502, - "name": "StructuredDocumentation", - "src": "1098:642:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "spender", - "overrides": null, - "scope": 511, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 503, - "name": "ElementaryTypeName", - "src": "1762:7:2" - } - ], - "id": 504, - "name": "VariableDeclaration", - "src": "1762:15:2" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 511, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 505, - "name": "ElementaryTypeName", - "src": "1779:7:2" - } - ], - "id": 506, - "name": "VariableDeclaration", - "src": "1779:14:2" - } - ], - "id": 507, - "name": "ParameterList", - "src": "1761:33:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 511, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 508, - "name": "ElementaryTypeName", - "src": "1813:4:2" - } - ], - "id": 509, - "name": "VariableDeclaration", - "src": "1813:4:2" - } - ], - "id": 510, - "name": "ParameterList", - "src": "1812:6:2" - } - ], - "id": 511, - "name": "FunctionDefinition", - "src": "1745:74:2" - }, - { - "attributes": { - "body": null, - "functionSelector": "23b872dd", - "implemented": false, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "transferFrom", - "overrides": null, - "scope": 542, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": " @dev Moves `amount` tokens from `sender` to `recipient` 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." - }, - "id": 512, - "name": "StructuredDocumentation", - "src": "1825:296:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "sender", - "overrides": null, - "scope": 523, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 513, - "name": "ElementaryTypeName", - "src": "2148:7:2" - } - ], - "id": 514, - "name": "VariableDeclaration", - "src": "2148:14:2" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "recipient", - "overrides": null, - "scope": 523, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 515, - "name": "ElementaryTypeName", - "src": "2164:7:2" - } - ], - "id": 516, - "name": "VariableDeclaration", - "src": "2164:17:2" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 523, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 517, - "name": "ElementaryTypeName", - "src": "2183:7:2" - } - ], - "id": 518, - "name": "VariableDeclaration", - "src": "2183:14:2" - } - ], - "id": 519, - "name": "ParameterList", - "src": "2147:51:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 523, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 520, - "name": "ElementaryTypeName", - "src": "2217:4:2" - } - ], - "id": 521, - "name": "VariableDeclaration", - "src": "2217:4:2" - } - ], - "id": 522, - "name": "ParameterList", - "src": "2216:6:2" - } - ], - "id": 523, - "name": "FunctionDefinition", - "src": "2126:97:2" - }, - { - "attributes": { - "anonymous": false, - "name": "Transfer" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." - }, - "id": 524, - "name": "StructuredDocumentation", - "src": "2229:158:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "from", - "overrides": null, - "scope": 532, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 525, - "name": "ElementaryTypeName", - "src": "2407:7:2" - } - ], - "id": 526, - "name": "VariableDeclaration", - "src": "2407:20:2" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "to", - "overrides": null, - "scope": 532, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 527, - "name": "ElementaryTypeName", - "src": "2429:7:2" - } - ], - "id": 528, - "name": "VariableDeclaration", - "src": "2429:18:2" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "value", - "overrides": null, - "scope": 532, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 529, - "name": "ElementaryTypeName", - "src": "2449:7:2" - } - ], - "id": 530, - "name": "VariableDeclaration", - "src": "2449:13:2" - } - ], - "id": 531, - "name": "ParameterList", - "src": "2406:57:2" - } - ], - "id": 532, - "name": "EventDefinition", - "src": "2392:72:2" - }, - { - "attributes": { - "anonymous": false, - "name": "Approval" - }, - "children": [ - { - "attributes": { - "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." - }, - "id": 533, - "name": "StructuredDocumentation", - "src": "2470:148:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "overrides": null, - "scope": 541, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 534, - "name": "ElementaryTypeName", - "src": "2638:7:2" - } - ], - "id": 535, - "name": "VariableDeclaration", - "src": "2638:21:2" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "spender", - "overrides": null, - "scope": 541, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 536, - "name": "ElementaryTypeName", - "src": "2661:7:2" - } - ], - "id": 537, - "name": "VariableDeclaration", - "src": "2661:23:2" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "value", - "overrides": null, - "scope": 541, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 538, - "name": "ElementaryTypeName", - "src": "2686:7:2" - } - ], - "id": 539, - "name": "VariableDeclaration", - "src": "2686:13:2" - } - ], - "id": 540, - "name": "ParameterList", - "src": "2637:63:2" - } - ], - "id": 541, - "name": "EventDefinition", - "src": "2623:78:2" - } - ], - "id": 542, - "name": "ContractDefinition", - "src": "137:2566:2" - } - ], - "id": 543, - "name": "SourceUnit", - "src": "33:2671:2" - }, - "compiler": { - "name": "solc", - "version": "0.6.10+commit.00c0fcaf.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "3.4.3", - "updatedAt": "2021-10-13T15:44:47.629Z", - "devdoc": { - "details": "Interface of the ERC20 standard as defined in the EIP.", - "methods": { - "allowance(address,address)": { - "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." - }, - "approve(address,uint256)": { - "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." - }, - "balanceOf(address)": { - "details": "Returns the amount of tokens owned by `account`." - }, - "totalSupply()": { - "details": "Returns the amount of tokens in existence." - }, - "transfer(address,uint256)": { - "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event." - }, - "transferFrom(address,address,uint256)": { - "details": "Moves `amount` tokens from `sender` to `recipient` 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." - } - } - }, - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json deleted file mode 100644 index 9c21cdc64..000000000 --- a/build/contracts/Migrations.json +++ /dev/null @@ -1,964 +0,0 @@ -{ - "contractName": "Migrations", - "abi": [ - { - "inputs": [], - "name": "last_completed_migration", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "completed", - "type": "uint256" - } - ], - "name": "setCompleted", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.6.10+commit.00c0fcaf\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/Migrations.sol\":{\"keccak256\":\"0x7eaedbb1a3e4e0f585d9063393872f88ded247ca3c3c3c8492ea18e7629a6411\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3eb571cee910095df65a06a1c1d3f89187c72a3c184ef87a7538d9aa39ad07\",\"dweb:/ipfs/QmdqR3vrSSGR49qFGZr49Mb39z7dgD6tSzEDoaqtM31o61\"]}},\"version\":1}", - "bytecode": "0x6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005057600080fd5b5061021f806100606000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd576146100ae575b600080fd5b61004e6100dc565b6040518082815260200191505060405180910390f35b61006c6100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100da600480360360208110156100c457600080fd5b8101908080359060200190929190505050610107565b005b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806101b76033913960400191505060405180910390fd5b806001819055505056fe546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572a264697066735822122053e3def27f71b96a8a81060455eb34bf7af211328df3e4e3ea9be53f3fbc0c6f64736f6c634300060a0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063445df0ac146100465780638da5cb5b14610064578063fdacd576146100ae575b600080fd5b61004e6100dc565b6040518082815260200191505060405180910390f35b61006c6100e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100da600480360360208110156100c457600080fd5b8101908080359060200190929190505050610107565b005b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806101b76033913960400191505060405180910390fd5b806001819055505056fe546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572a264697066735822122053e3def27f71b96a8a81060455eb34bf7af211328df3e4e3ea9be53f3fbc0c6f64736f6c634300060a0033", - "immutableReferences": {}, - "sourceMap": "66:352:5:-:0;;;113:10;90:33;;;;;;;;;;;;;;;;;;;;66:352;;;;;;;;;;;;;;;;", - "deployedSourceMap": "66:352:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;127:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;90:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;313:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;127:36;;;;:::o;90:33::-;;;;;;;;;;;;;:::o;313:103::-;225:5;;;;;;;;;;;211:19;;:10;:19;;;196:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;402:9:::1;375:24;:36;;;;313:103:::0;:::o", - "source": "// SPDX-License-Identifier: MIT\npragma solidity >=0.4.22 <0.9.0;\n\ncontract Migrations {\n address public owner = msg.sender;\n uint public last_completed_migration;\n\n modifier restricted() {\n require(\n msg.sender == owner,\n \"This function is restricted to the contract's owner\"\n );\n _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n}\n", - "sourcePath": "/Users/miloskotlar/dkg-onchain-module-v6/contracts/Migrations.sol", - "ast": { - "absolutePath": "project:/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 878 - ] - }, - "id": 879, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 847, - "literals": [ - "solidity", - ">=", - "0.4", - ".22", - "<", - "0.9", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "32:32:5" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 878, - "linearizedBaseContracts": [ - 878 - ], - "name": "Migrations", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "functionSelector": "8da5cb5b", - "id": 851, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 878, - "src": "90:33:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 848, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "90:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 849, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "113:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 850, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "113:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "445df0ac", - "id": 853, - "mutability": "mutable", - "name": "last_completed_migration", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 878, - "src": "127:36:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 852, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "127:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 864, - "nodeType": "Block", - "src": "190:119:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 859, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 856, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "211:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 857, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "211:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 858, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 851, - "src": "225:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "211:19:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572", - "id": 860, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "238:53:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", - "typeString": "literal_string \"This function is restricted to the contract's owner\"" - }, - "value": "This function is restricted to the contract's owner" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", - "typeString": "literal_string \"This function is restricted to the contract's owner\"" - } - ], - "id": 855, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "196:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 861, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "196:101:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 862, - "nodeType": "ExpressionStatement", - "src": "196:101:5" - }, - { - "id": 863, - "nodeType": "PlaceholderStatement", - "src": "303:1:5" - } - ] - }, - "documentation": null, - "id": 865, - "name": "restricted", - "nodeType": "ModifierDefinition", - "overrides": null, - "parameters": { - "id": 854, - "nodeType": "ParameterList", - "parameters": [], - "src": "187:2:5" - }, - "src": "168:141:5", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 876, - "nodeType": "Block", - "src": "369:47:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 874, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 872, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 853, - "src": "375:24:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 873, - "name": "completed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 867, - "src": "402:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "375:36:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 875, - "nodeType": "ExpressionStatement", - "src": "375:36:5" - } - ] - }, - "documentation": null, - "functionSelector": "fdacd576", - "id": 877, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 870, - "modifierName": { - "argumentTypes": null, - "id": 869, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 865, - "src": "358:10:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "358:10:5" - } - ], - "name": "setCompleted", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 868, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 867, - "mutability": "mutable", - "name": "completed", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 877, - "src": "335:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 866, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "335:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "334:16:5" - }, - "returnParameters": { - "id": 871, - "nodeType": "ParameterList", - "parameters": [], - "src": "369:0:5" - }, - "scope": 878, - "src": "313:103:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - } - ], - "scope": 879, - "src": "66:352:5" - } - ], - "src": "32:387:5" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 878 - ] - }, - "license": "MIT" - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - ">=", - "0.4", - ".22", - "<", - "0.9", - ".0" - ] - }, - "id": 847, - "name": "PragmaDirective", - "src": "32:32:5" - }, - { - "attributes": { - "abstract": false, - "baseContracts": [ - null - ], - "contractDependencies": [ - null - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 878 - ], - "name": "Migrations", - "scope": 879 - }, - "children": [ - { - "attributes": { - "constant": false, - "functionSelector": "8da5cb5b", - "mutability": "mutable", - "name": "owner", - "overrides": null, - "scope": 878, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 848, - "name": "ElementaryTypeName", - "src": "90:7:5" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 849, - "name": "Identifier", - "src": "113:3:5" - } - ], - "id": 850, - "name": "MemberAccess", - "src": "113:10:5" - } - ], - "id": 851, - "name": "VariableDeclaration", - "src": "90:33:5" - }, - { - "attributes": { - "constant": false, - "functionSelector": "445df0ac", - "mutability": "mutable", - "name": "last_completed_migration", - "overrides": null, - "scope": 878, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 852, - "name": "ElementaryTypeName", - "src": "127:4:5" - } - ], - "id": 853, - "name": "VariableDeclaration", - "src": "127:36:5" - }, - { - "attributes": { - "documentation": null, - "name": "restricted", - "overrides": null, - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 854, - "name": "ParameterList", - "src": "187:2:5" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_f60fe2d9d123295bf92ecf95167f1fa709e374da35e4c083bd39dc2d82acd8b1", - "typeString": "literal_string \"This function is restricted to the contract's owner\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 855, - "name": "Identifier", - "src": "196:7:5" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 856, - "name": "Identifier", - "src": "211:3:5" - } - ], - "id": 857, - "name": "MemberAccess", - "src": "211:10:5" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 851, - "type": "address", - "value": "owner" - }, - "id": 858, - "name": "Identifier", - "src": "225:5:5" - } - ], - "id": 859, - "name": "BinaryOperation", - "src": "211:19:5" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "546869732066756e6374696f6e206973207265737472696374656420746f2074686520636f6e74726163742773206f776e6572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"This function is restricted to the contract's owner\"", - "value": "This function is restricted to the contract's owner" - }, - "id": 860, - "name": "Literal", - "src": "238:53:5" - } - ], - "id": 861, - "name": "FunctionCall", - "src": "196:101:5" - } - ], - "id": 862, - "name": "ExpressionStatement", - "src": "196:101:5" - }, - { - "id": 863, - "name": "PlaceholderStatement", - "src": "303:1:5" - } - ], - "id": 864, - "name": "Block", - "src": "190:119:5" - } - ], - "id": 865, - "name": "ModifierDefinition", - "src": "168:141:5" - }, - { - "attributes": { - "documentation": null, - "functionSelector": "fdacd576", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "setCompleted", - "overrides": null, - "scope": 878, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "completed", - "overrides": null, - "scope": 877, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 866, - "name": "ElementaryTypeName", - "src": "335:4:5" - } - ], - "id": 867, - "name": "VariableDeclaration", - "src": "335:14:5" - } - ], - "id": 868, - "name": "ParameterList", - "src": "334:16:5" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 871, - "name": "ParameterList", - "src": "369:0:5" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 865, - "type": "modifier ()", - "value": "restricted" - }, - "id": 869, - "name": "Identifier", - "src": "358:10:5" - } - ], - "id": 870, - "name": "ModifierInvocation", - "src": "358:10:5" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 853, - "type": "uint256", - "value": "last_completed_migration" - }, - "id": 872, - "name": "Identifier", - "src": "375:24:5" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 867, - "type": "uint256", - "value": "completed" - }, - "id": 873, - "name": "Identifier", - "src": "402:9:5" - } - ], - "id": 874, - "name": "Assignment", - "src": "375:36:5" - } - ], - "id": 875, - "name": "ExpressionStatement", - "src": "375:36:5" - } - ], - "id": 876, - "name": "Block", - "src": "369:47:5" - } - ], - "id": 877, - "name": "FunctionDefinition", - "src": "313:103:5" - } - ], - "id": 878, - "name": "ContractDefinition", - "src": "66:352:5" - } - ], - "id": 879, - "name": "SourceUnit", - "src": "32:387:5" - }, - "compiler": { - "name": "solc", - "version": "0.6.10+commit.00c0fcaf.Emscripten.clang" - }, - "networks": { - "5777": { - "events": {}, - "links": {}, - "address": "0x209679fA3B658Cd0fC74473aF28243bfe78a9b12", - "transactionHash": "0x1b799766152a61bbf51ae5bdb6db5133b01f841d163789462be37a3109ad0eea" - }, - "80001": { - "events": {}, - "links": {}, - "address": "0xB0d4300e8376F3d9c58eF8edD534A8b42cf964aE", - "transactionHash": "0xf8ad7ba3a442068ff480d9d70bf65320a5cf92073592d52f953ab16b560e699b" - } - }, - "schemaVersion": "3.4.3", - "updatedAt": "2022-02-11T10:13:46.713Z", - "networkType": "ethereum", - "devdoc": { - "methods": {} - }, - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/build/contracts/Ownable.json b/build/contracts/Ownable.json deleted file mode 100644 index ae5caf91c..000000000 --- a/build/contracts/Ownable.json +++ /dev/null @@ -1,3056 +0,0 @@ -{ - "contractName": "Ownable", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.6.10+commit.00c0fcaf\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"openzeppelin-solidity/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}", - "bytecode": "0x", - "deployedBytecode": "0x", - "immutableReferences": {}, - "sourceMap": "", - "deployedSourceMap": "", - "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"../utils/Context.sol\";\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor () internal {\n address msgSender = _msgSender();\n _owner = msgSender;\n emit OwnershipTransferred(address(0), msgSender);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}\n", - "sourcePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "ast": { - "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "exportedSymbols": { - "Ownable": [ - 109 - ] - }, - "id": 110, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "33:31:0" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/utils/Context.sol", - "file": "../utils/Context.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 110, - "sourceUnit": 566, - "src": "66:30:0", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": true, - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 4, - "name": "Context", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 565, - "src": "621:7:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$565", - "typeString": "contract Context" - } - }, - "id": 5, - "nodeType": "InheritanceSpecifier", - "src": "621:7:0" - } - ], - "contractDependencies": [ - 565 - ], - "contractKind": "contract", - "documentation": { - "id": 3, - "nodeType": "StructuredDocumentation", - "src": "97:494:0", - "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." - }, - "fullyImplemented": true, - "id": 109, - "linearizedBaseContracts": [ - 109, - 565 - ], - "name": "Ownable", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 7, - "mutability": "mutable", - "name": "_owner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 109, - "src": "635:22:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "635:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "private" - }, - { - "anonymous": false, - "documentation": null, - "id": 13, - "name": "OwnershipTransferred", - "nodeType": "EventDefinition", - "parameters": { - "id": 12, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9, - "indexed": true, - "mutability": "mutable", - "name": "previousOwner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 13, - "src": "691:29:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 8, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "691:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11, - "indexed": true, - "mutability": "mutable", - "name": "newOwner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 13, - "src": "722:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 10, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "722:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "690:57:0" - }, - "src": "664:84:0" - }, - { - "body": { - "id": 34, - "nodeType": "Block", - "src": "874:135:0", - "statements": [ - { - "assignments": [ - 18 - ], - "declarations": [ - { - "constant": false, - "id": 18, - "mutability": "mutable", - "name": "msgSender", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 34, - "src": "884:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 17, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "884:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 21, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 19, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "904:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 20, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "904:12:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "884:32:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 24, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 22, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "926:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 23, - "name": "msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "935:9:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "926:18:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 25, - "nodeType": "ExpressionStatement", - "src": "926:18:0" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 29, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "988:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 28, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "980:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 27, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "980:7:0", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "980:10:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 31, - "name": "msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "992:9:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 26, - "name": "OwnershipTransferred", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "959:20:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 32, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "959:43:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33, - "nodeType": "EmitStatement", - "src": "954:48:0" - } - ] - }, - "documentation": { - "id": 14, - "nodeType": "StructuredDocumentation", - "src": "754:91:0", - "text": " @dev Initializes the contract setting the deployer as the initial owner." - }, - "id": 35, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 15, - "nodeType": "ParameterList", - "parameters": [], - "src": "862:2:0" - }, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [], - "src": "874:0:0" - }, - "scope": 109, - "src": "850:159:0", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 43, - "nodeType": "Block", - "src": "1140:30:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 41, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "1157:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 40, - "id": 42, - "nodeType": "Return", - "src": "1150:13:0" - } - ] - }, - "documentation": { - "id": 36, - "nodeType": "StructuredDocumentation", - "src": "1015:65:0", - "text": " @dev Returns the address of the current owner." - }, - "functionSelector": "8da5cb5b", - "id": 44, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "owner", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 37, - "nodeType": "ParameterList", - "parameters": [], - "src": "1099:2:0" - }, - "returnParameters": { - "id": 40, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 39, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 44, - "src": "1131:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1131:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1130:9:0" - }, - "scope": 109, - "src": "1085:85:0", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "body": { - "id": 57, - "nodeType": "Block", - "src": "1279:96:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 52, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 48, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 44, - "src": "1297:5:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 49, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1297:7:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 50, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "1308:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 51, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1308:12:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "1297:23:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", - "id": 53, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1322:34:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", - "typeString": "literal_string \"Ownable: caller is not the owner\"" - }, - "value": "Ownable: caller is not the owner" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", - "typeString": "literal_string \"Ownable: caller is not the owner\"" - } - ], - "id": 47, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1289:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 54, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1289:68:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 55, - "nodeType": "ExpressionStatement", - "src": "1289:68:0" - }, - { - "id": 56, - "nodeType": "PlaceholderStatement", - "src": "1367:1:0" - } - ] - }, - "documentation": { - "id": 45, - "nodeType": "StructuredDocumentation", - "src": "1176:77:0", - "text": " @dev Throws if called by any account other than the owner." - }, - "id": 58, - "name": "onlyOwner", - "nodeType": "ModifierDefinition", - "overrides": null, - "parameters": { - "id": 46, - "nodeType": "ParameterList", - "parameters": [], - "src": "1276:2:0" - }, - "src": "1258:117:0", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 79, - "nodeType": "Block", - "src": "1771:91:0", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 65, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "1807:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1823:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 67, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1815:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 66, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1815:7:0", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1815:10:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 64, - "name": "OwnershipTransferred", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "1786:20:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1786:40:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 71, - "nodeType": "EmitStatement", - "src": "1781:45:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 77, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 72, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "1836:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 75, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1853:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1845:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 73, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1845:7:0", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 76, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1845:10:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "1836:19:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 78, - "nodeType": "ExpressionStatement", - "src": "1836:19:0" - } - ] - }, - "documentation": { - "id": 59, - "nodeType": "StructuredDocumentation", - "src": "1381:331:0", - "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner." - }, - "functionSelector": "715018a6", - "id": 80, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 62, - "modifierName": { - "argumentTypes": null, - "id": 61, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "1761:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1761:9:0" - } - ], - "name": "renounceOwnership", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 60, - "nodeType": "ParameterList", - "parameters": [], - "src": "1743:2:0" - }, - "returnParameters": { - "id": 63, - "nodeType": "ParameterList", - "parameters": [], - "src": "1771:0:0" - }, - "scope": 109, - "src": "1717:145:0", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" - }, - { - "body": { - "id": 107, - "nodeType": "Block", - "src": "2081:170:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 94, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 89, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "2099:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 92, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2119:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 91, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2111:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 90, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2111:7:0", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 93, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2111:10:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "2099:22:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", - "id": 95, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2123:40:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", - "typeString": "literal_string \"Ownable: new owner is the zero address\"" - }, - "value": "Ownable: new owner is the zero address" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", - "typeString": "literal_string \"Ownable: new owner is the zero address\"" - } - ], - "id": 88, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2091:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 96, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2091:73:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 97, - "nodeType": "ExpressionStatement", - "src": "2091:73:0" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 99, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "2200:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 100, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "2208:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 98, - "name": "OwnershipTransferred", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 13, - "src": "2179:20:0", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2179:38:0", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 102, - "nodeType": "EmitStatement", - "src": "2174:43:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 105, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 103, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7, - "src": "2227:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 104, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "2236:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2227:17:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 106, - "nodeType": "ExpressionStatement", - "src": "2227:17:0" - } - ] - }, - "documentation": { - "id": 81, - "nodeType": "StructuredDocumentation", - "src": "1868:138:0", - "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." - }, - "functionSelector": "f2fde38b", - "id": 108, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 86, - "modifierName": { - "argumentTypes": null, - "id": 85, - "name": "onlyOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 58, - "src": "2071:9:0", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2071:9:0" - } - ], - "name": "transferOwnership", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 84, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 83, - "mutability": "mutable", - "name": "newOwner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 108, - "src": "2038:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 82, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2038:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2037:18:0" - }, - "returnParameters": { - "id": 87, - "nodeType": "ParameterList", - "parameters": [], - "src": "2081:0:0" - }, - "scope": 109, - "src": "2011:240:0", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" - } - ], - "scope": 110, - "src": "592:1661:0" - } - ], - "src": "33:2221:0" - }, - "legacyAST": { - "attributes": { - "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "exportedSymbols": { - "Ownable": [ - 109 - ] - }, - "license": "MIT" - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ] - }, - "id": 1, - "name": "PragmaDirective", - "src": "33:31:0" - }, - { - "attributes": { - "SourceUnit": 566, - "absolutePath": "openzeppelin-solidity/contracts/utils/Context.sol", - "file": "../utils/Context.sol", - "scope": 110, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 2, - "name": "ImportDirective", - "src": "66:30:0" - }, - { - "attributes": { - "abstract": true, - "contractDependencies": [ - 565 - ], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 109, - 565 - ], - "name": "Ownable", - "scope": 110 - }, - "children": [ - { - "attributes": { - "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." - }, - "id": 3, - "name": "StructuredDocumentation", - "src": "97:494:0" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Context", - "referencedDeclaration": 565, - "type": "contract Context" - }, - "id": 4, - "name": "UserDefinedTypeName", - "src": "621:7:0" - } - ], - "id": 5, - "name": "InheritanceSpecifier", - "src": "621:7:0" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_owner", - "overrides": null, - "scope": 109, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6, - "name": "ElementaryTypeName", - "src": "635:7:0" - } - ], - "id": 7, - "name": "VariableDeclaration", - "src": "635:22:0" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "OwnershipTransferred" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "previousOwner", - "overrides": null, - "scope": 13, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 8, - "name": "ElementaryTypeName", - "src": "691:7:0" - } - ], - "id": 9, - "name": "VariableDeclaration", - "src": "691:29:0" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "newOwner", - "overrides": null, - "scope": 13, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 10, - "name": "ElementaryTypeName", - "src": "722:7:0" - } - ], - "id": 11, - "name": "VariableDeclaration", - "src": "722:24:0" - } - ], - "id": 12, - "name": "ParameterList", - "src": "690:57:0" - } - ], - "id": 13, - "name": "EventDefinition", - "src": "664:84:0" - }, - { - "attributes": { - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [ - null - ], - "name": "", - "overrides": null, - "scope": 109, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Initializes the contract setting the deployer as the initial owner." - }, - "id": 14, - "name": "StructuredDocumentation", - "src": "754:91:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 15, - "name": "ParameterList", - "src": "862:2:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 16, - "name": "ParameterList", - "src": "874:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 18 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "msgSender", - "overrides": null, - "scope": 34, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 17, - "name": "ElementaryTypeName", - "src": "884:7:0" - } - ], - "id": 18, - "name": "VariableDeclaration", - "src": "884:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 553, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 19, - "name": "Identifier", - "src": "904:10:0" - } - ], - "id": 20, - "name": "FunctionCall", - "src": "904:12:0" - } - ], - "id": 21, - "name": "VariableDeclarationStatement", - "src": "884:32:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7, - "type": "address", - "value": "_owner" - }, - "id": 22, - "name": "Identifier", - "src": "926:6:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 18, - "type": "address", - "value": "msgSender" - }, - "id": 23, - "name": "Identifier", - "src": "935:9:0" - } - ], - "id": 24, - "name": "Assignment", - "src": "926:18:0" - } - ], - "id": 25, - "name": "ExpressionStatement", - "src": "926:18:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 13, - "type": "function (address,address)", - "value": "OwnershipTransferred" - }, - "id": 26, - "name": "Identifier", - "src": "959:20:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 27, - "name": "ElementaryTypeName", - "src": "980:7:0" - } - ], - "id": 28, - "name": "ElementaryTypeNameExpression", - "src": "980:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 29, - "name": "Literal", - "src": "988:1:0" - } - ], - "id": 30, - "name": "FunctionCall", - "src": "980:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 18, - "type": "address", - "value": "msgSender" - }, - "id": 31, - "name": "Identifier", - "src": "992:9:0" - } - ], - "id": 32, - "name": "FunctionCall", - "src": "959:43:0" - } - ], - "id": 33, - "name": "EmitStatement", - "src": "954:48:0" - } - ], - "id": 34, - "name": "Block", - "src": "874:135:0" - } - ], - "id": 35, - "name": "FunctionDefinition", - "src": "850:159:0" - }, - { - "attributes": { - "functionSelector": "8da5cb5b", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "owner", - "overrides": null, - "scope": 109, - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the address of the current owner." - }, - "id": 36, - "name": "StructuredDocumentation", - "src": "1015:65:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 37, - "name": "ParameterList", - "src": "1099:2:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 44, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 38, - "name": "ElementaryTypeName", - "src": "1131:7:0" - } - ], - "id": 39, - "name": "VariableDeclaration", - "src": "1131:7:0" - } - ], - "id": 40, - "name": "ParameterList", - "src": "1130:9:0" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 40 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7, - "type": "address", - "value": "_owner" - }, - "id": 41, - "name": "Identifier", - "src": "1157:6:0" - } - ], - "id": 42, - "name": "Return", - "src": "1150:13:0" - } - ], - "id": 43, - "name": "Block", - "src": "1140:30:0" - } - ], - "id": 44, - "name": "FunctionDefinition", - "src": "1085:85:0" - }, - { - "attributes": { - "name": "onlyOwner", - "overrides": null, - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Throws if called by any account other than the owner." - }, - "id": 45, - "name": "StructuredDocumentation", - "src": "1176:77:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 46, - "name": "ParameterList", - "src": "1276:2:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", - "typeString": "literal_string \"Ownable: caller is not the owner\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 47, - "name": "Identifier", - "src": "1289:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 44, - "type": "function () view returns (address)", - "value": "owner" - }, - "id": 48, - "name": "Identifier", - "src": "1297:5:0" - } - ], - "id": 49, - "name": "FunctionCall", - "src": "1297:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 553, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 50, - "name": "Identifier", - "src": "1308:10:0" - } - ], - "id": 51, - "name": "FunctionCall", - "src": "1308:12:0" - } - ], - "id": 52, - "name": "BinaryOperation", - "src": "1297:23:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Ownable: caller is not the owner\"", - "value": "Ownable: caller is not the owner" - }, - "id": 53, - "name": "Literal", - "src": "1322:34:0" - } - ], - "id": 54, - "name": "FunctionCall", - "src": "1289:68:0" - } - ], - "id": 55, - "name": "ExpressionStatement", - "src": "1289:68:0" - }, - { - "id": 56, - "name": "PlaceholderStatement", - "src": "1367:1:0" - } - ], - "id": 57, - "name": "Block", - "src": "1279:96:0" - } - ], - "id": 58, - "name": "ModifierDefinition", - "src": "1258:117:0" - }, - { - "attributes": { - "functionSelector": "715018a6", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "renounceOwnership", - "overrides": null, - "scope": 109, - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner." - }, - "id": 59, - "name": "StructuredDocumentation", - "src": "1381:331:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 60, - "name": "ParameterList", - "src": "1743:2:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 63, - "name": "ParameterList", - "src": "1771:0:0" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 58, - "type": "modifier ()", - "value": "onlyOwner" - }, - "id": 61, - "name": "Identifier", - "src": "1761:9:0" - } - ], - "id": 62, - "name": "ModifierInvocation", - "src": "1761:9:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 13, - "type": "function (address,address)", - "value": "OwnershipTransferred" - }, - "id": 64, - "name": "Identifier", - "src": "1786:20:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7, - "type": "address", - "value": "_owner" - }, - "id": 65, - "name": "Identifier", - "src": "1807:6:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 66, - "name": "ElementaryTypeName", - "src": "1815:7:0" - } - ], - "id": 67, - "name": "ElementaryTypeNameExpression", - "src": "1815:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 68, - "name": "Literal", - "src": "1823:1:0" - } - ], - "id": 69, - "name": "FunctionCall", - "src": "1815:10:0" - } - ], - "id": 70, - "name": "FunctionCall", - "src": "1786:40:0" - } - ], - "id": 71, - "name": "EmitStatement", - "src": "1781:45:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7, - "type": "address", - "value": "_owner" - }, - "id": 72, - "name": "Identifier", - "src": "1836:6:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 73, - "name": "ElementaryTypeName", - "src": "1845:7:0" - } - ], - "id": 74, - "name": "ElementaryTypeNameExpression", - "src": "1845:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 75, - "name": "Literal", - "src": "1853:1:0" - } - ], - "id": 76, - "name": "FunctionCall", - "src": "1845:10:0" - } - ], - "id": 77, - "name": "Assignment", - "src": "1836:19:0" - } - ], - "id": 78, - "name": "ExpressionStatement", - "src": "1836:19:0" - } - ], - "id": 79, - "name": "Block", - "src": "1771:91:0" - } - ], - "id": 80, - "name": "FunctionDefinition", - "src": "1717:145:0" - }, - { - "attributes": { - "functionSelector": "f2fde38b", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "transferOwnership", - "overrides": null, - "scope": 109, - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." - }, - "id": 81, - "name": "StructuredDocumentation", - "src": "1868:138:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "newOwner", - "overrides": null, - "scope": 108, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 82, - "name": "ElementaryTypeName", - "src": "2038:7:0" - } - ], - "id": 83, - "name": "VariableDeclaration", - "src": "2038:16:0" - } - ], - "id": 84, - "name": "ParameterList", - "src": "2037:18:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 87, - "name": "ParameterList", - "src": "2081:0:0" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 58, - "type": "modifier ()", - "value": "onlyOwner" - }, - "id": 85, - "name": "Identifier", - "src": "2071:9:0" - } - ], - "id": 86, - "name": "ModifierInvocation", - "src": "2071:9:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", - "typeString": "literal_string \"Ownable: new owner is the zero address\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 88, - "name": "Identifier", - "src": "2091:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 83, - "type": "address", - "value": "newOwner" - }, - "id": 89, - "name": "Identifier", - "src": "2099:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 90, - "name": "ElementaryTypeName", - "src": "2111:7:0" - } - ], - "id": 91, - "name": "ElementaryTypeNameExpression", - "src": "2111:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 92, - "name": "Literal", - "src": "2119:1:0" - } - ], - "id": 93, - "name": "FunctionCall", - "src": "2111:10:0" - } - ], - "id": 94, - "name": "BinaryOperation", - "src": "2099:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Ownable: new owner is the zero address\"", - "value": "Ownable: new owner is the zero address" - }, - "id": 95, - "name": "Literal", - "src": "2123:40:0" - } - ], - "id": 96, - "name": "FunctionCall", - "src": "2091:73:0" - } - ], - "id": 97, - "name": "ExpressionStatement", - "src": "2091:73:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 13, - "type": "function (address,address)", - "value": "OwnershipTransferred" - }, - "id": 98, - "name": "Identifier", - "src": "2179:20:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7, - "type": "address", - "value": "_owner" - }, - "id": 99, - "name": "Identifier", - "src": "2200:6:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 83, - "type": "address", - "value": "newOwner" - }, - "id": 100, - "name": "Identifier", - "src": "2208:8:0" - } - ], - "id": 101, - "name": "FunctionCall", - "src": "2179:38:0" - } - ], - "id": 102, - "name": "EmitStatement", - "src": "2174:43:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7, - "type": "address", - "value": "_owner" - }, - "id": 103, - "name": "Identifier", - "src": "2227:6:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 83, - "type": "address", - "value": "newOwner" - }, - "id": 104, - "name": "Identifier", - "src": "2236:8:0" - } - ], - "id": 105, - "name": "Assignment", - "src": "2227:17:0" - } - ], - "id": 106, - "name": "ExpressionStatement", - "src": "2227:17:0" - } - ], - "id": 107, - "name": "Block", - "src": "2081:170:0" - } - ], - "id": 108, - "name": "FunctionDefinition", - "src": "2011:240:0" - } - ], - "id": 109, - "name": "ContractDefinition", - "src": "592:1661:0" - } - ], - "id": 110, - "name": "SourceUnit", - "src": "33:2221:0" - }, - "compiler": { - "name": "solc", - "version": "0.6.10+commit.00c0fcaf.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "3.4.3", - "updatedAt": "2021-10-13T15:44:47.621Z", - "devdoc": { - "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", - "methods": { - "constructor": { - "details": "Initializes the contract setting the deployer as the initial owner." - }, - "owner()": { - "details": "Returns the address of the current owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." - }, - "transferOwnership(address)": { - "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." - } - } - }, - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/build/contracts/OwnershipManager.json b/build/contracts/OwnershipManager.json deleted file mode 100644 index cec733517..000000000 --- a/build/contracts/OwnershipManager.json +++ /dev/null @@ -1,336 +0,0 @@ -{ - "contractName": "OwnershipManager", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/OwnershipManager.sol\":\"OwnershipManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"openzeppelin-solidity/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"project:/contracts/OwnershipManager.sol\":{\"keccak256\":\"0x570d800b1b8776b23b77d321fdab6039bf6de5fc3a6de0bb50219a377628d938\",\"urls\":[\"bzz-raw://2cf952585eb410131dc12194b0b1d723e58460e21771b467cf194625944893b9\",\"dweb:/ipfs/QmSn4qPACeesyUfmX62PRxPybT9BpDkfZYZURRes9Tk3W7\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b6104b4806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063715018a6146100465780638da5cb5b14610050578063f2fde38b14610084575b600080fd5b61004e6100c8565b005b610058610235565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100c66004803603602081101561009a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061025e565b005b6100d0610450565b73ffffffffffffffffffffffffffffffffffffffff166100ee610235565b73ffffffffffffffffffffffffffffffffffffffff1614610177576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610266610450565b73ffffffffffffffffffffffffffffffffffffffff16610284610235565b73ffffffffffffffffffffffffffffffffffffffff161461030d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610393576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806104596026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220141485366582a37247111ce5b44ad760103bfb49b7dce80602b04f6fd51dade664736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063715018a6146100465780638da5cb5b14610050578063f2fde38b14610084575b600080fd5b61004e6100c8565b005b610058610235565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100c66004803603602081101561009a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061025e565b005b6100d0610450565b73ffffffffffffffffffffffffffffffffffffffff166100ee610235565b73ffffffffffffffffffffffffffffffffffffffff1614610177576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610266610450565b73ffffffffffffffffffffffffffffffffffffffff16610284610235565b73ffffffffffffffffffffffffffffffffffffffff161461030d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610393576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806104596026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220141485366582a37247111ce5b44ad760103bfb49b7dce80602b04f6fd51dade664736f6c63430007060033", - "immutableReferences": {}, - "generatedSources": [], - "deployedGeneratedSources": [], - "sourceMap": "220:41:8:-:0;;;;;;;;;;;;;884:17:0;904:12;:10;;;:12;;:::i;:::-;884:32;;935:9;926:6;;:18;;;;;;;;;;;;;;;;;;992:9;959:43;;988:1;959:43;;;;;;;;;;;;850:159;220:41:8;;598:104:6;651:15;685:10;678:17;;598:104;:::o;220:41:8:-;;;;;;;", - "deployedSourceMap": "220:41:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:145:0;;;:::i;:::-;;1085:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2011:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1717:145;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1786:40;;1807:6;::::0;::::1;;;;;;;;1786:40;;;;;;;;;;;;1853:1;1836:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1717:145::o:0;1085:85::-;1131:7;1157:6;;;;;;;;;;;1150:13;;1085:85;:::o;2011:240::-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2119:1:::1;2099:22;;:8;:22;;;;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:8;2179:38;;2200:6;::::0;::::1;;;;;;;;2179:38;;;;;;;;;;;;2236:8;2227:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2011:240:::0;:::o;598:104:6:-;651:15;685:10;678:17;;598:104;:::o", - "source": "pragma solidity >=0.6.0 <0.8.0;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/access/Ownable.sol\";\n\ncontract OwnershipManager is Ownable {\n\n}", - "sourcePath": "/Users/miloskotlar/dkg-onchain-module-v6/contracts/OwnershipManager.sol", - "ast": { - "absolutePath": "project:/contracts/OwnershipManager.sol", - "exportedSymbols": { - "Context": [ - 815 - ], - "IERC20": [ - 676 - ], - "Ownable": [ - 109 - ], - "OwnershipManager": [ - 1147 - ], - "SafeMath": [ - 476 - ] - }, - "id": 1148, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1141, - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "0:31:8" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 1142, - "nodeType": "ImportDirective", - "scope": 1148, - "sourceUnit": 677, - "src": "33:64:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "id": 1143, - "nodeType": "ImportDirective", - "scope": 1148, - "sourceUnit": 477, - "src": "98:59:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "file": "openzeppelin-solidity/contracts/access/Ownable.sol", - "id": 1144, - "nodeType": "ImportDirective", - "scope": 1148, - "sourceUnit": 110, - "src": "158:60:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 1145, - "name": "Ownable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 109, - "src": "249:7:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$109", - "typeString": "contract Ownable" - } - }, - "id": 1146, - "nodeType": "InheritanceSpecifier", - "src": "249:7:8" - } - ], - "contractDependencies": [ - 109, - 815 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 1147, - "linearizedBaseContracts": [ - 1147, - 109, - 815 - ], - "name": "OwnershipManager", - "nodeType": "ContractDefinition", - "nodes": [], - "scope": 1148, - "src": "220:41:8" - } - ], - "src": "0:261:8" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/OwnershipManager.sol", - "exportedSymbols": { - "Context": [ - 815 - ], - "IERC20": [ - 676 - ], - "Ownable": [ - 109 - ], - "OwnershipManager": [ - 1147 - ], - "SafeMath": [ - 476 - ] - } - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ] - }, - "id": 1141, - "name": "PragmaDirective", - "src": "0:31:8" - }, - { - "attributes": { - "SourceUnit": 677, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "scope": 1148, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1142, - "name": "ImportDirective", - "src": "33:64:8" - }, - { - "attributes": { - "SourceUnit": 477, - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "scope": 1148, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1143, - "name": "ImportDirective", - "src": "98:59:8" - }, - { - "attributes": { - "SourceUnit": 110, - "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "file": "openzeppelin-solidity/contracts/access/Ownable.sol", - "scope": 1148, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1144, - "name": "ImportDirective", - "src": "158:60:8" - }, - { - "attributes": { - "abstract": false, - "contractDependencies": [ - 109, - 815 - ], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 1147, - 109, - 815 - ], - "name": "OwnershipManager", - "nodes": [ - null - ], - "scope": 1148 - }, - "children": [ - { - "attributes": {}, - "children": [ - { - "attributes": { - "name": "Ownable", - "referencedDeclaration": 109, - "type": "contract Ownable" - }, - "id": 1145, - "name": "UserDefinedTypeName", - "src": "249:7:8" - } - ], - "id": 1146, - "name": "InheritanceSpecifier", - "src": "249:7:8" - } - ], - "id": 1147, - "name": "ContractDefinition", - "src": "220:41:8" - } - ], - "id": 1148, - "name": "SourceUnit", - "src": "0:261:8" - }, - "compiler": { - "name": "solc", - "version": "0.7.6+commit.7338295f.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "3.4.3", - "updatedAt": "2022-02-10T14:48:30.729Z", - "devdoc": { - "kind": "dev", - "methods": { - "owner()": { - "details": "Returns the address of the current owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." - }, - "transferOwnership(address)": { - "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/build/contracts/SafeMath.json b/build/contracts/SafeMath.json deleted file mode 100644 index 0759b42a0..000000000 --- a/build/contracts/SafeMath.json +++ /dev/null @@ -1,9664 +0,0 @@ -{ - "contractName": "SafeMath", - "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.6.10+commit.00c0fcaf\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]}},\"version\":1}", - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203bea2451538dba86d92c562c970d3c7a874f8a6abc680e1150328f85e28f03f564736f6c634300060a0033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203bea2451538dba86d92c562c970d3c7a874f8a6abc680e1150328f85e28f03f564736f6c634300060a0033", - "immutableReferences": {}, - "sourceMap": "630:6594:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "630:6594:1:-:0;;;;;;;;", - "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a, \"SafeMath: subtraction overflow\");\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n if (a == 0) return 0;\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b > 0, \"SafeMath: division by zero\");\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b > 0, \"SafeMath: modulo by zero\");\n return a % b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n return a - b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryDiv}.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n return a % b;\n }\n}\n", - "sourcePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "ast": { - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "exportedSymbols": { - "SafeMath": [ - 464 - ] - }, - "id": 465, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 111, - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "33:31:1" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 112, - "nodeType": "StructuredDocumentation", - "src": "66:563:1", - "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." - }, - "fullyImplemented": true, - "id": 464, - "linearizedBaseContracts": [ - 464 - ], - "name": "SafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 142, - "nodeType": "Block", - "src": "865:98:1", - "statements": [ - { - "assignments": [ - 125 - ], - "declarations": [ - { - "constant": false, - "id": 125, - "mutability": "mutable", - "name": "c", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 142, - "src": "875:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 124, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "875:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 129, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 128, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 126, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "887:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 127, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "891:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "887:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "875:17:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 132, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 130, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "906:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 131, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "910:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "906:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 137, - "nodeType": "IfStatement", - "src": "902:28:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 133, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "921:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 134, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "928:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 135, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "920:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 123, - "id": 136, - "nodeType": "Return", - "src": "913:17:1" - } - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "74727565", - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "948:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "argumentTypes": null, - "id": 139, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "954:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 140, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "947:9:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 123, - "id": 141, - "nodeType": "Return", - "src": "940:16:1" - } - ] - }, - "documentation": { - "id": 113, - "nodeType": "StructuredDocumentation", - "src": "653:131:1", - "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 143, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tryAdd", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 118, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 115, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 143, - "src": "805:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 114, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "805:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 117, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 143, - "src": "816:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 116, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "816:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "804:22:1" - }, - "returnParameters": { - "id": 123, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 120, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 143, - "src": "850:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 119, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "850:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 122, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 143, - "src": "856:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 121, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "856:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "849:15:1" - }, - "scope": 464, - "src": "789:174:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 169, - "nodeType": "Block", - "src": "1185:75:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 157, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 155, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 148, - "src": "1199:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 156, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "1203:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1199:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 162, - "nodeType": "IfStatement", - "src": "1195:28:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 158, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1214:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 159, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1221:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 160, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1213:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 154, - "id": 161, - "nodeType": "Return", - "src": "1206:17:1" - } - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "74727565", - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1241:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 164, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "1247:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 165, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 148, - "src": "1251:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1247:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 167, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1240:13:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 154, - "id": 168, - "nodeType": "Return", - "src": "1233:20:1" - } - ] - }, - "documentation": { - "id": 144, - "nodeType": "StructuredDocumentation", - "src": "969:135:1", - "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 170, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "trySub", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 149, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 146, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 170, - "src": "1125:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 145, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1125:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 148, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 170, - "src": "1136:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 147, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1124:22:1" - }, - "returnParameters": { - "id": 154, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 151, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 170, - "src": "1170:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 150, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1170:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 153, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 170, - "src": "1176:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 152, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1176:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1169:15:1" - }, - "scope": 464, - "src": "1109:151:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 210, - "nodeType": "Block", - "src": "1484:359:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 182, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "1716:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1721:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1716:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 189, - "nodeType": "IfStatement", - "src": "1712:28:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "74727565", - "id": 185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1732:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 186, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1738:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 187, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1731:9:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 181, - "id": 188, - "nodeType": "Return", - "src": "1724:16:1" - } - }, - { - "assignments": [ - 191 - ], - "declarations": [ - { - "constant": false, - "id": 191, - "mutability": "mutable", - "name": "c", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 210, - "src": "1750:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 190, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1750:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 195, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 192, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "1762:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 193, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "1766:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1762:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1750:17:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 196, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 191, - "src": "1781:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 197, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "1785:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1781:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 199, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "1790:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1781:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 205, - "nodeType": "IfStatement", - "src": "1777:33:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 201, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1801:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 202, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1808:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 203, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1800:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 181, - "id": 204, - "nodeType": "Return", - "src": "1793:17:1" - } - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "74727565", - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1828:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "argumentTypes": null, - "id": 207, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 191, - "src": "1834:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 208, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1827:9:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 181, - "id": 209, - "nodeType": "Return", - "src": "1820:16:1" - } - ] - }, - "documentation": { - "id": 171, - "nodeType": "StructuredDocumentation", - "src": "1266:137:1", - "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 211, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tryMul", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 176, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 173, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 211, - "src": "1424:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1424:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 175, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 211, - "src": "1435:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 174, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1435:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1423:22:1" - }, - "returnParameters": { - "id": 181, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 178, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 211, - "src": "1469:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 177, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1469:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 180, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 211, - "src": "1475:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 179, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1475:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1468:15:1" - }, - "scope": 464, - "src": "1408:435:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 237, - "nodeType": "Block", - "src": "2068:76:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 225, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 223, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "2082:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2087:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2082:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 230, - "nodeType": "IfStatement", - "src": "2078:29:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2098:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2105:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 228, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2097:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 222, - "id": 229, - "nodeType": "Return", - "src": "2090:17:1" - } - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "74727565", - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2125:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 232, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 214, - "src": "2131:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 233, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "2135:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 235, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2124:13:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 222, - "id": 236, - "nodeType": "Return", - "src": "2117:20:1" - } - ] - }, - "documentation": { - "id": 212, - "nodeType": "StructuredDocumentation", - "src": "1849:138:1", - "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._" - }, - "id": 238, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tryDiv", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 217, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 214, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 238, - "src": "2008:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 213, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2008:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 216, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 238, - "src": "2019:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 215, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2019:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2007:22:1" - }, - "returnParameters": { - "id": 222, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 219, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 238, - "src": "2053:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 218, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2053:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 221, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 238, - "src": "2059:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 220, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2059:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2052:15:1" - }, - "scope": 464, - "src": "1992:152:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 264, - "nodeType": "Block", - "src": "2379:76:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 252, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 250, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 243, - "src": "2393:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 251, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2398:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2393:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 257, - "nodeType": "IfStatement", - "src": "2389:29:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 253, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2409:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2416:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 255, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2408:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 249, - "id": 256, - "nodeType": "Return", - "src": "2401:17:1" - } - }, - { - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "hexValue": "74727565", - "id": 258, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2436:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 261, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 259, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 241, - "src": "2442:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "id": 260, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 243, - "src": "2446:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2442:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 262, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2435:13:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 249, - "id": 263, - "nodeType": "Return", - "src": "2428:20:1" - } - ] - }, - "documentation": { - "id": 239, - "nodeType": "StructuredDocumentation", - "src": "2150:148:1", - "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._" - }, - "id": 265, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tryMod", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 244, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 241, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 265, - "src": "2319:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 240, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2319:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 243, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 265, - "src": "2330:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 242, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2318:22:1" - }, - "returnParameters": { - "id": 249, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 246, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 265, - "src": "2364:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 245, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2364:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 248, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 265, - "src": "2370:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 247, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2370:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2363:15:1" - }, - "scope": 464, - "src": "2303:152:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 290, - "nodeType": "Block", - "src": "2757:108:1", - "statements": [ - { - "assignments": [ - 276 - ], - "declarations": [ - { - "constant": false, - "id": 276, - "mutability": "mutable", - "name": "c", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 290, - "src": "2767:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 275, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2767:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 280, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 279, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 277, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 268, - "src": "2779:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 278, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 270, - "src": "2783:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2779:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2767:17:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 284, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 282, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 276, - "src": "2802:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 283, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 268, - "src": "2807:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2802:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", - "id": 285, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2810:29:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", - "typeString": "literal_string \"SafeMath: addition overflow\"" - }, - "value": "SafeMath: addition overflow" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", - "typeString": "literal_string \"SafeMath: addition overflow\"" - } - ], - "id": 281, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2794:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2794:46:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 287, - "nodeType": "ExpressionStatement", - "src": "2794:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 288, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 276, - "src": "2857:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 274, - "id": 289, - "nodeType": "Return", - "src": "2850:8:1" - } - ] - }, - "documentation": { - "id": 266, - "nodeType": "StructuredDocumentation", - "src": "2461:224:1", - "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." - }, - "id": 291, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 271, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 268, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 291, - "src": "2703:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 267, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2703:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 270, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 291, - "src": "2714:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 269, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2714:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2702:22:1" - }, - "returnParameters": { - "id": 274, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 273, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 291, - "src": "2748:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 272, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2748:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2747:9:1" - }, - "scope": 464, - "src": "2690:175:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 312, - "nodeType": "Block", - "src": "3203:88:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 302, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 296, - "src": "3221:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 303, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "3226:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3221:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3229:32:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", - "typeString": "literal_string \"SafeMath: subtraction overflow\"" - }, - "value": "SafeMath: subtraction overflow" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", - "typeString": "literal_string \"SafeMath: subtraction overflow\"" - } - ], - "id": 301, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3213:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 306, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3213:49:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 307, - "nodeType": "ExpressionStatement", - "src": "3213:49:1" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 310, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 308, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 294, - "src": "3279:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 309, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 296, - "src": "3283:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3279:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 300, - "id": 311, - "nodeType": "Return", - "src": "3272:12:1" - } - ] - }, - "documentation": { - "id": 292, - "nodeType": "StructuredDocumentation", - "src": "2871:260:1", - "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." - }, - "id": 313, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 297, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 294, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 313, - "src": "3149:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 293, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3149:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 296, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 313, - "src": "3160:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 295, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3160:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3148:22:1" - }, - "returnParameters": { - "id": 300, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 299, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 313, - "src": "3194:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 298, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3194:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3193:9:1" - }, - "scope": 464, - "src": "3136:155:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 346, - "nodeType": "Block", - "src": "3605:148:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 325, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 323, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3619:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3624:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3619:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 328, - "nodeType": "IfStatement", - "src": "3615:20:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "30", - "id": 326, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3634:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 322, - "id": 327, - "nodeType": "Return", - "src": "3627:8:1" - } - }, - { - "assignments": [ - 330 - ], - "declarations": [ - { - "constant": false, - "id": 330, - "mutability": "mutable", - "name": "c", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 346, - "src": "3645:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 329, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3645:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 334, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 331, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3657:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 332, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 318, - "src": "3661:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3657:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3645:17:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 336, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "3680:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 337, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 316, - "src": "3684:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3680:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 339, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 318, - "src": "3689:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3680:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", - "id": 341, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3692:35:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", - "typeString": "literal_string \"SafeMath: multiplication overflow\"" - }, - "value": "SafeMath: multiplication overflow" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", - "typeString": "literal_string \"SafeMath: multiplication overflow\"" - } - ], - "id": 335, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3672:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 342, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3672:56:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 343, - "nodeType": "ExpressionStatement", - "src": "3672:56:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 344, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "3745:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 322, - "id": 345, - "nodeType": "Return", - "src": "3738:8:1" - } - ] - }, - "documentation": { - "id": 314, - "nodeType": "StructuredDocumentation", - "src": "3297:236:1", - "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." - }, - "id": 347, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 319, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 316, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 347, - "src": "3551:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 315, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3551:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 318, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 347, - "src": "3562:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 317, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3562:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3550:22:1" - }, - "returnParameters": { - "id": 322, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 321, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 347, - "src": "3596:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 320, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3596:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3595:9:1" - }, - "scope": 464, - "src": "3538:215:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 368, - "nodeType": "Block", - "src": "4284:83:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 358, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "4302:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4306:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4302:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", - "id": 361, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4309:28:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", - "typeString": "literal_string \"SafeMath: division by zero\"" - }, - "value": "SafeMath: division by zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", - "typeString": "literal_string \"SafeMath: division by zero\"" - } - ], - "id": 357, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4294:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 362, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4294:44:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 363, - "nodeType": "ExpressionStatement", - "src": "4294:44:1" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 366, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 364, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "4355:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 365, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "4359:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4355:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 356, - "id": 367, - "nodeType": "Return", - "src": "4348:12:1" - } - ] - }, - "documentation": { - "id": 348, - "nodeType": "StructuredDocumentation", - "src": "3759:453:1", - "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 369, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 353, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 350, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 369, - "src": "4230:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 349, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4230:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 352, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 369, - "src": "4241:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 351, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4241:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4229:22:1" - }, - "returnParameters": { - "id": 356, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 355, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 369, - "src": "4275:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 354, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4275:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4274:9:1" - }, - "scope": 464, - "src": "4217:150:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 390, - "nodeType": "Block", - "src": "4887:81:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 380, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 374, - "src": "4905:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 381, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4909:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4905:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", - "id": 383, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4912:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", - "typeString": "literal_string \"SafeMath: modulo by zero\"" - }, - "value": "SafeMath: modulo by zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", - "typeString": "literal_string \"SafeMath: modulo by zero\"" - } - ], - "id": 379, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4897:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 384, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4897:42:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 385, - "nodeType": "ExpressionStatement", - "src": "4897:42:1" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 388, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 386, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "4956:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "id": 387, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 374, - "src": "4960:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4956:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 378, - "id": 389, - "nodeType": "Return", - "src": "4949:12:1" - } - ] - }, - "documentation": { - "id": 370, - "nodeType": "StructuredDocumentation", - "src": "4373:442:1", - "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 391, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mod", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 375, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 372, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 391, - "src": "4833:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 371, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4833:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 374, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 391, - "src": "4844:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 373, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4844:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4832:22:1" - }, - "returnParameters": { - "id": 378, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 377, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 391, - "src": "4878:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 376, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4878:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4877:9:1" - }, - "scope": 464, - "src": "4820:148:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 414, - "nodeType": "Block", - "src": "5527:68:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 404, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 396, - "src": "5545:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 405, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "5550:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5545:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "id": 407, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 398, - "src": "5553:12:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 403, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5537:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5537:29:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 409, - "nodeType": "ExpressionStatement", - "src": "5537:29:1" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 410, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 394, - "src": "5583:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 411, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 396, - "src": "5587:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5583:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 402, - "id": 413, - "nodeType": "Return", - "src": "5576:12:1" - } - ] - }, - "documentation": { - "id": 392, - "nodeType": "StructuredDocumentation", - "src": "4974:453:1", - "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." - }, - "id": 415, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 399, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 394, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 415, - "src": "5445:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 393, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5445:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 396, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 415, - "src": "5456:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 395, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5456:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 398, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 415, - "src": "5467:26:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 397, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5467:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5444:50:1" - }, - "returnParameters": { - "id": 402, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 401, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 415, - "src": "5518:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 400, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5518:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5517:9:1" - }, - "scope": 464, - "src": "5432:163:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 438, - "nodeType": "Block", - "src": "6347:67:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 430, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 428, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "6365:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6369:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6365:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "id": 431, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "6372:12:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 427, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6357:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 432, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6357:28:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 433, - "nodeType": "ExpressionStatement", - "src": "6357:28:1" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 434, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "6402:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "id": 435, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "6406:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6402:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 426, - "id": 437, - "nodeType": "Return", - "src": "6395:12:1" - } - ] - }, - "documentation": { - "id": 416, - "nodeType": "StructuredDocumentation", - "src": "5601:646:1", - "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 439, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 423, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 418, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 439, - "src": "6265:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 417, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6265:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 420, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 439, - "src": "6276:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 419, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6276:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 422, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 439, - "src": "6287:26:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 421, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "6287:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6264:50:1" - }, - "returnParameters": { - "id": 426, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 425, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 439, - "src": "6338:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 424, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6338:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6337:9:1" - }, - "scope": 464, - "src": "6252:162:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 462, - "nodeType": "Block", - "src": "7155:67:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 454, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 452, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "7173:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 453, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7177:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7173:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "id": 455, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 446, - "src": "7180:12:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 451, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7165:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7165:28:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 457, - "nodeType": "ExpressionStatement", - "src": "7165:28:1" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 458, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 442, - "src": "7210:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "id": 459, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "7214:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7210:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 450, - "id": 461, - "nodeType": "Return", - "src": "7203:12:1" - } - ] - }, - "documentation": { - "id": 440, - "nodeType": "StructuredDocumentation", - "src": "6420:635:1", - "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 463, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mod", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 447, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 442, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 463, - "src": "7073:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 441, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7073:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 444, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 463, - "src": "7084:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 443, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7084:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 446, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 463, - "src": "7095:26:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 445, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "7095:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7072:50:1" - }, - "returnParameters": { - "id": 450, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 449, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 463, - "src": "7146:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 448, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7146:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7145:9:1" - }, - "scope": 464, - "src": "7060:162:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 465, - "src": "630:6594:1" - } - ], - "src": "33:7192:1" - }, - "legacyAST": { - "attributes": { - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "exportedSymbols": { - "SafeMath": [ - 464 - ] - }, - "license": "MIT" - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ] - }, - "id": 111, - "name": "PragmaDirective", - "src": "33:31:1" - }, - { - "attributes": { - "abstract": false, - "baseContracts": [ - null - ], - "contractDependencies": [ - null - ], - "contractKind": "library", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 464 - ], - "name": "SafeMath", - "scope": 465 - }, - "children": [ - { - "attributes": { - "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." - }, - "id": 112, - "name": "StructuredDocumentation", - "src": "66:563:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "tryAdd", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 113, - "name": "StructuredDocumentation", - "src": "653:131:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 143, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 114, - "name": "ElementaryTypeName", - "src": "805:7:1" - } - ], - "id": 115, - "name": "VariableDeclaration", - "src": "805:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 143, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 116, - "name": "ElementaryTypeName", - "src": "816:7:1" - } - ], - "id": 117, - "name": "VariableDeclaration", - "src": "816:9:1" - } - ], - "id": 118, - "name": "ParameterList", - "src": "804:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 143, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 119, - "name": "ElementaryTypeName", - "src": "850:4:1" - } - ], - "id": 120, - "name": "VariableDeclaration", - "src": "850:4:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 143, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 121, - "name": "ElementaryTypeName", - "src": "856:7:1" - } - ], - "id": 122, - "name": "VariableDeclaration", - "src": "856:7:1" - } - ], - "id": 123, - "name": "ParameterList", - "src": "849:15:1" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 125 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "c", - "overrides": null, - "scope": 142, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 124, - "name": "ElementaryTypeName", - "src": "875:7:1" - } - ], - "id": 125, - "name": "VariableDeclaration", - "src": "875:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 115, - "type": "uint256", - "value": "a" - }, - "id": 126, - "name": "Identifier", - "src": "887:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 117, - "type": "uint256", - "value": "b" - }, - "id": 127, - "name": "Identifier", - "src": "891:1:1" - } - ], - "id": 128, - "name": "BinaryOperation", - "src": "887:5:1" - } - ], - "id": 129, - "name": "VariableDeclarationStatement", - "src": "875:17:1" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "uint256", - "value": "c" - }, - "id": 130, - "name": "Identifier", - "src": "906:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 115, - "type": "uint256", - "value": "a" - }, - "id": 131, - "name": "Identifier", - "src": "910:1:1" - } - ], - "id": 132, - "name": "BinaryOperation", - "src": "906:5:1" - }, - { - "attributes": { - "functionReturnParameters": 123 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "tuple(bool,int_const 0)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 133, - "name": "Literal", - "src": "921:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 134, - "name": "Literal", - "src": "928:1:1" - } - ], - "id": 135, - "name": "TupleExpression", - "src": "920:10:1" - } - ], - "id": 136, - "name": "Return", - "src": "913:17:1" - } - ], - "id": 137, - "name": "IfStatement", - "src": "902:28:1" - }, - { - "attributes": { - "functionReturnParameters": 123 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "tuple(bool,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 138, - "name": "Literal", - "src": "948:4:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "uint256", - "value": "c" - }, - "id": 139, - "name": "Identifier", - "src": "954:1:1" - } - ], - "id": 140, - "name": "TupleExpression", - "src": "947:9:1" - } - ], - "id": 141, - "name": "Return", - "src": "940:16:1" - } - ], - "id": 142, - "name": "Block", - "src": "865:98:1" - } - ], - "id": 143, - "name": "FunctionDefinition", - "src": "789:174:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "trySub", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 144, - "name": "StructuredDocumentation", - "src": "969:135:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 170, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 145, - "name": "ElementaryTypeName", - "src": "1125:7:1" - } - ], - "id": 146, - "name": "VariableDeclaration", - "src": "1125:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 170, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 147, - "name": "ElementaryTypeName", - "src": "1136:7:1" - } - ], - "id": 148, - "name": "VariableDeclaration", - "src": "1136:9:1" - } - ], - "id": 149, - "name": "ParameterList", - "src": "1124:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 170, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 150, - "name": "ElementaryTypeName", - "src": "1170:4:1" - } - ], - "id": 151, - "name": "VariableDeclaration", - "src": "1170:4:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 170, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 152, - "name": "ElementaryTypeName", - "src": "1176:7:1" - } - ], - "id": 153, - "name": "VariableDeclaration", - "src": "1176:7:1" - } - ], - "id": 154, - "name": "ParameterList", - "src": "1169:15:1" - }, - { - "children": [ - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 148, - "type": "uint256", - "value": "b" - }, - "id": 155, - "name": "Identifier", - "src": "1199:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 146, - "type": "uint256", - "value": "a" - }, - "id": 156, - "name": "Identifier", - "src": "1203:1:1" - } - ], - "id": 157, - "name": "BinaryOperation", - "src": "1199:5:1" - }, - { - "attributes": { - "functionReturnParameters": 154 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "tuple(bool,int_const 0)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 158, - "name": "Literal", - "src": "1214:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 159, - "name": "Literal", - "src": "1221:1:1" - } - ], - "id": 160, - "name": "TupleExpression", - "src": "1213:10:1" - } - ], - "id": 161, - "name": "Return", - "src": "1206:17:1" - } - ], - "id": 162, - "name": "IfStatement", - "src": "1195:28:1" - }, - { - "attributes": { - "functionReturnParameters": 154 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "tuple(bool,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 163, - "name": "Literal", - "src": "1241:4:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 146, - "type": "uint256", - "value": "a" - }, - "id": 164, - "name": "Identifier", - "src": "1247:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 148, - "type": "uint256", - "value": "b" - }, - "id": 165, - "name": "Identifier", - "src": "1251:1:1" - } - ], - "id": 166, - "name": "BinaryOperation", - "src": "1247:5:1" - } - ], - "id": 167, - "name": "TupleExpression", - "src": "1240:13:1" - } - ], - "id": 168, - "name": "Return", - "src": "1233:20:1" - } - ], - "id": 169, - "name": "Block", - "src": "1185:75:1" - } - ], - "id": 170, - "name": "FunctionDefinition", - "src": "1109:151:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "tryMul", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 171, - "name": "StructuredDocumentation", - "src": "1266:137:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 211, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 172, - "name": "ElementaryTypeName", - "src": "1424:7:1" - } - ], - "id": 173, - "name": "VariableDeclaration", - "src": "1424:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 211, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 174, - "name": "ElementaryTypeName", - "src": "1435:7:1" - } - ], - "id": 175, - "name": "VariableDeclaration", - "src": "1435:9:1" - } - ], - "id": 176, - "name": "ParameterList", - "src": "1423:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 211, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 177, - "name": "ElementaryTypeName", - "src": "1469:4:1" - } - ], - "id": 178, - "name": "VariableDeclaration", - "src": "1469:4:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 211, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 179, - "name": "ElementaryTypeName", - "src": "1475:7:1" - } - ], - "id": 180, - "name": "VariableDeclaration", - "src": "1475:7:1" - } - ], - "id": 181, - "name": "ParameterList", - "src": "1468:15:1" - }, - { - "children": [ - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 173, - "type": "uint256", - "value": "a" - }, - "id": 182, - "name": "Identifier", - "src": "1716:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 183, - "name": "Literal", - "src": "1721:1:1" - } - ], - "id": 184, - "name": "BinaryOperation", - "src": "1716:6:1" - }, - { - "attributes": { - "functionReturnParameters": 181 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "tuple(bool,int_const 0)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 185, - "name": "Literal", - "src": "1732:4:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 186, - "name": "Literal", - "src": "1738:1:1" - } - ], - "id": 187, - "name": "TupleExpression", - "src": "1731:9:1" - } - ], - "id": 188, - "name": "Return", - "src": "1724:16:1" - } - ], - "id": 189, - "name": "IfStatement", - "src": "1712:28:1" - }, - { - "attributes": { - "assignments": [ - 191 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "c", - "overrides": null, - "scope": 210, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 190, - "name": "ElementaryTypeName", - "src": "1750:7:1" - } - ], - "id": 191, - "name": "VariableDeclaration", - "src": "1750:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "*", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 173, - "type": "uint256", - "value": "a" - }, - "id": 192, - "name": "Identifier", - "src": "1762:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 175, - "type": "uint256", - "value": "b" - }, - "id": 193, - "name": "Identifier", - "src": "1766:1:1" - } - ], - "id": 194, - "name": "BinaryOperation", - "src": "1762:5:1" - } - ], - "id": 195, - "name": "VariableDeclarationStatement", - "src": "1750:17:1" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "/", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 191, - "type": "uint256", - "value": "c" - }, - "id": 196, - "name": "Identifier", - "src": "1781:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 173, - "type": "uint256", - "value": "a" - }, - "id": 197, - "name": "Identifier", - "src": "1785:1:1" - } - ], - "id": 198, - "name": "BinaryOperation", - "src": "1781:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 175, - "type": "uint256", - "value": "b" - }, - "id": 199, - "name": "Identifier", - "src": "1790:1:1" - } - ], - "id": 200, - "name": "BinaryOperation", - "src": "1781:10:1" - }, - { - "attributes": { - "functionReturnParameters": 181 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "tuple(bool,int_const 0)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 201, - "name": "Literal", - "src": "1801:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 202, - "name": "Literal", - "src": "1808:1:1" - } - ], - "id": 203, - "name": "TupleExpression", - "src": "1800:10:1" - } - ], - "id": 204, - "name": "Return", - "src": "1793:17:1" - } - ], - "id": 205, - "name": "IfStatement", - "src": "1777:33:1" - }, - { - "attributes": { - "functionReturnParameters": 181 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "tuple(bool,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 206, - "name": "Literal", - "src": "1828:4:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 191, - "type": "uint256", - "value": "c" - }, - "id": 207, - "name": "Identifier", - "src": "1834:1:1" - } - ], - "id": 208, - "name": "TupleExpression", - "src": "1827:9:1" - } - ], - "id": 209, - "name": "Return", - "src": "1820:16:1" - } - ], - "id": 210, - "name": "Block", - "src": "1484:359:1" - } - ], - "id": 211, - "name": "FunctionDefinition", - "src": "1408:435:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "tryDiv", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._" - }, - "id": 212, - "name": "StructuredDocumentation", - "src": "1849:138:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 238, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 213, - "name": "ElementaryTypeName", - "src": "2008:7:1" - } - ], - "id": 214, - "name": "VariableDeclaration", - "src": "2008:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 238, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 215, - "name": "ElementaryTypeName", - "src": "2019:7:1" - } - ], - "id": 216, - "name": "VariableDeclaration", - "src": "2019:9:1" - } - ], - "id": 217, - "name": "ParameterList", - "src": "2007:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 238, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 218, - "name": "ElementaryTypeName", - "src": "2053:4:1" - } - ], - "id": 219, - "name": "VariableDeclaration", - "src": "2053:4:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 238, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 220, - "name": "ElementaryTypeName", - "src": "2059:7:1" - } - ], - "id": 221, - "name": "VariableDeclaration", - "src": "2059:7:1" - } - ], - "id": 222, - "name": "ParameterList", - "src": "2052:15:1" - }, - { - "children": [ - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 216, - "type": "uint256", - "value": "b" - }, - "id": 223, - "name": "Identifier", - "src": "2082:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 224, - "name": "Literal", - "src": "2087:1:1" - } - ], - "id": 225, - "name": "BinaryOperation", - "src": "2082:6:1" - }, - { - "attributes": { - "functionReturnParameters": 222 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "tuple(bool,int_const 0)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 226, - "name": "Literal", - "src": "2098:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 227, - "name": "Literal", - "src": "2105:1:1" - } - ], - "id": 228, - "name": "TupleExpression", - "src": "2097:10:1" - } - ], - "id": 229, - "name": "Return", - "src": "2090:17:1" - } - ], - "id": 230, - "name": "IfStatement", - "src": "2078:29:1" - }, - { - "attributes": { - "functionReturnParameters": 222 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "tuple(bool,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 231, - "name": "Literal", - "src": "2125:4:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "/", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 214, - "type": "uint256", - "value": "a" - }, - "id": 232, - "name": "Identifier", - "src": "2131:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 216, - "type": "uint256", - "value": "b" - }, - "id": 233, - "name": "Identifier", - "src": "2135:1:1" - } - ], - "id": 234, - "name": "BinaryOperation", - "src": "2131:5:1" - } - ], - "id": 235, - "name": "TupleExpression", - "src": "2124:13:1" - } - ], - "id": 236, - "name": "Return", - "src": "2117:20:1" - } - ], - "id": 237, - "name": "Block", - "src": "2068:76:1" - } - ], - "id": 238, - "name": "FunctionDefinition", - "src": "1992:152:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "tryMod", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._" - }, - "id": 239, - "name": "StructuredDocumentation", - "src": "2150:148:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 265, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 240, - "name": "ElementaryTypeName", - "src": "2319:7:1" - } - ], - "id": 241, - "name": "VariableDeclaration", - "src": "2319:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 265, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 242, - "name": "ElementaryTypeName", - "src": "2330:7:1" - } - ], - "id": 243, - "name": "VariableDeclaration", - "src": "2330:9:1" - } - ], - "id": 244, - "name": "ParameterList", - "src": "2318:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 265, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 245, - "name": "ElementaryTypeName", - "src": "2364:4:1" - } - ], - "id": 246, - "name": "VariableDeclaration", - "src": "2364:4:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 265, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 247, - "name": "ElementaryTypeName", - "src": "2370:7:1" - } - ], - "id": 248, - "name": "VariableDeclaration", - "src": "2370:7:1" - } - ], - "id": 249, - "name": "ParameterList", - "src": "2363:15:1" - }, - { - "children": [ - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 243, - "type": "uint256", - "value": "b" - }, - "id": 250, - "name": "Identifier", - "src": "2393:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 251, - "name": "Literal", - "src": "2398:1:1" - } - ], - "id": 252, - "name": "BinaryOperation", - "src": "2393:6:1" - }, - { - "attributes": { - "functionReturnParameters": 249 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "tuple(bool,int_const 0)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 253, - "name": "Literal", - "src": "2409:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 254, - "name": "Literal", - "src": "2416:1:1" - } - ], - "id": 255, - "name": "TupleExpression", - "src": "2408:10:1" - } - ], - "id": 256, - "name": "Return", - "src": "2401:17:1" - } - ], - "id": 257, - "name": "IfStatement", - "src": "2389:29:1" - }, - { - "attributes": { - "functionReturnParameters": 249 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "tuple(bool,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 258, - "name": "Literal", - "src": "2436:4:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "%", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 241, - "type": "uint256", - "value": "a" - }, - "id": 259, - "name": "Identifier", - "src": "2442:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 243, - "type": "uint256", - "value": "b" - }, - "id": 260, - "name": "Identifier", - "src": "2446:1:1" - } - ], - "id": 261, - "name": "BinaryOperation", - "src": "2442:5:1" - } - ], - "id": 262, - "name": "TupleExpression", - "src": "2435:13:1" - } - ], - "id": 263, - "name": "Return", - "src": "2428:20:1" - } - ], - "id": 264, - "name": "Block", - "src": "2379:76:1" - } - ], - "id": 265, - "name": "FunctionDefinition", - "src": "2303:152:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "add", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." - }, - "id": 266, - "name": "StructuredDocumentation", - "src": "2461:224:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 291, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 267, - "name": "ElementaryTypeName", - "src": "2703:7:1" - } - ], - "id": 268, - "name": "VariableDeclaration", - "src": "2703:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 291, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 269, - "name": "ElementaryTypeName", - "src": "2714:7:1" - } - ], - "id": 270, - "name": "VariableDeclaration", - "src": "2714:9:1" - } - ], - "id": 271, - "name": "ParameterList", - "src": "2702:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 291, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 272, - "name": "ElementaryTypeName", - "src": "2748:7:1" - } - ], - "id": 273, - "name": "VariableDeclaration", - "src": "2748:7:1" - } - ], - "id": 274, - "name": "ParameterList", - "src": "2747:9:1" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 276 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "c", - "overrides": null, - "scope": 290, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 275, - "name": "ElementaryTypeName", - "src": "2767:7:1" - } - ], - "id": 276, - "name": "VariableDeclaration", - "src": "2767:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 268, - "type": "uint256", - "value": "a" - }, - "id": 277, - "name": "Identifier", - "src": "2779:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 270, - "type": "uint256", - "value": "b" - }, - "id": 278, - "name": "Identifier", - "src": "2783:1:1" - } - ], - "id": 279, - "name": "BinaryOperation", - "src": "2779:5:1" - } - ], - "id": 280, - "name": "VariableDeclarationStatement", - "src": "2767:17:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", - "typeString": "literal_string \"SafeMath: addition overflow\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 281, - "name": "Identifier", - "src": "2794:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 276, - "type": "uint256", - "value": "c" - }, - "id": 282, - "name": "Identifier", - "src": "2802:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 268, - "type": "uint256", - "value": "a" - }, - "id": 283, - "name": "Identifier", - "src": "2807:1:1" - } - ], - "id": 284, - "name": "BinaryOperation", - "src": "2802:6:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "536166654d6174683a206164646974696f6e206f766572666c6f77", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SafeMath: addition overflow\"", - "value": "SafeMath: addition overflow" - }, - "id": 285, - "name": "Literal", - "src": "2810:29:1" - } - ], - "id": 286, - "name": "FunctionCall", - "src": "2794:46:1" - } - ], - "id": 287, - "name": "ExpressionStatement", - "src": "2794:46:1" - }, - { - "attributes": { - "functionReturnParameters": 274 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 276, - "type": "uint256", - "value": "c" - }, - "id": 288, - "name": "Identifier", - "src": "2857:1:1" - } - ], - "id": 289, - "name": "Return", - "src": "2850:8:1" - } - ], - "id": 290, - "name": "Block", - "src": "2757:108:1" - } - ], - "id": 291, - "name": "FunctionDefinition", - "src": "2690:175:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "sub", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." - }, - "id": 292, - "name": "StructuredDocumentation", - "src": "2871:260:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 313, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 293, - "name": "ElementaryTypeName", - "src": "3149:7:1" - } - ], - "id": 294, - "name": "VariableDeclaration", - "src": "3149:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 313, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 295, - "name": "ElementaryTypeName", - "src": "3160:7:1" - } - ], - "id": 296, - "name": "VariableDeclaration", - "src": "3160:9:1" - } - ], - "id": 297, - "name": "ParameterList", - "src": "3148:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 313, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 298, - "name": "ElementaryTypeName", - "src": "3194:7:1" - } - ], - "id": 299, - "name": "VariableDeclaration", - "src": "3194:7:1" - } - ], - "id": 300, - "name": "ParameterList", - "src": "3193:9:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", - "typeString": "literal_string \"SafeMath: subtraction overflow\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 301, - "name": "Identifier", - "src": "3213:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 296, - "type": "uint256", - "value": "b" - }, - "id": 302, - "name": "Identifier", - "src": "3221:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 294, - "type": "uint256", - "value": "a" - }, - "id": 303, - "name": "Identifier", - "src": "3226:1:1" - } - ], - "id": 304, - "name": "BinaryOperation", - "src": "3221:6:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SafeMath: subtraction overflow\"", - "value": "SafeMath: subtraction overflow" - }, - "id": 305, - "name": "Literal", - "src": "3229:32:1" - } - ], - "id": 306, - "name": "FunctionCall", - "src": "3213:49:1" - } - ], - "id": 307, - "name": "ExpressionStatement", - "src": "3213:49:1" - }, - { - "attributes": { - "functionReturnParameters": 300 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 294, - "type": "uint256", - "value": "a" - }, - "id": 308, - "name": "Identifier", - "src": "3279:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 296, - "type": "uint256", - "value": "b" - }, - "id": 309, - "name": "Identifier", - "src": "3283:1:1" - } - ], - "id": 310, - "name": "BinaryOperation", - "src": "3279:5:1" - } - ], - "id": 311, - "name": "Return", - "src": "3272:12:1" - } - ], - "id": 312, - "name": "Block", - "src": "3203:88:1" - } - ], - "id": 313, - "name": "FunctionDefinition", - "src": "3136:155:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "mul", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." - }, - "id": 314, - "name": "StructuredDocumentation", - "src": "3297:236:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 347, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 315, - "name": "ElementaryTypeName", - "src": "3551:7:1" - } - ], - "id": 316, - "name": "VariableDeclaration", - "src": "3551:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 347, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 317, - "name": "ElementaryTypeName", - "src": "3562:7:1" - } - ], - "id": 318, - "name": "VariableDeclaration", - "src": "3562:9:1" - } - ], - "id": 319, - "name": "ParameterList", - "src": "3550:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 347, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 320, - "name": "ElementaryTypeName", - "src": "3596:7:1" - } - ], - "id": 321, - "name": "VariableDeclaration", - "src": "3596:7:1" - } - ], - "id": 322, - "name": "ParameterList", - "src": "3595:9:1" - }, - { - "children": [ - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 316, - "type": "uint256", - "value": "a" - }, - "id": 323, - "name": "Identifier", - "src": "3619:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 324, - "name": "Literal", - "src": "3624:1:1" - } - ], - "id": 325, - "name": "BinaryOperation", - "src": "3619:6:1" - }, - { - "attributes": { - "functionReturnParameters": 322 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 326, - "name": "Literal", - "src": "3634:1:1" - } - ], - "id": 327, - "name": "Return", - "src": "3627:8:1" - } - ], - "id": 328, - "name": "IfStatement", - "src": "3615:20:1" - }, - { - "attributes": { - "assignments": [ - 330 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "c", - "overrides": null, - "scope": 346, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 329, - "name": "ElementaryTypeName", - "src": "3645:7:1" - } - ], - "id": 330, - "name": "VariableDeclaration", - "src": "3645:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "*", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 316, - "type": "uint256", - "value": "a" - }, - "id": 331, - "name": "Identifier", - "src": "3657:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 318, - "type": "uint256", - "value": "b" - }, - "id": 332, - "name": "Identifier", - "src": "3661:1:1" - } - ], - "id": 333, - "name": "BinaryOperation", - "src": "3657:5:1" - } - ], - "id": 334, - "name": "VariableDeclarationStatement", - "src": "3645:17:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", - "typeString": "literal_string \"SafeMath: multiplication overflow\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 335, - "name": "Identifier", - "src": "3672:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "/", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 330, - "type": "uint256", - "value": "c" - }, - "id": 336, - "name": "Identifier", - "src": "3680:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 316, - "type": "uint256", - "value": "a" - }, - "id": 337, - "name": "Identifier", - "src": "3684:1:1" - } - ], - "id": 338, - "name": "BinaryOperation", - "src": "3680:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 318, - "type": "uint256", - "value": "b" - }, - "id": 339, - "name": "Identifier", - "src": "3689:1:1" - } - ], - "id": 340, - "name": "BinaryOperation", - "src": "3680:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SafeMath: multiplication overflow\"", - "value": "SafeMath: multiplication overflow" - }, - "id": 341, - "name": "Literal", - "src": "3692:35:1" - } - ], - "id": 342, - "name": "FunctionCall", - "src": "3672:56:1" - } - ], - "id": 343, - "name": "ExpressionStatement", - "src": "3672:56:1" - }, - { - "attributes": { - "functionReturnParameters": 322 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 330, - "type": "uint256", - "value": "c" - }, - "id": 344, - "name": "Identifier", - "src": "3745:1:1" - } - ], - "id": 345, - "name": "Return", - "src": "3738:8:1" - } - ], - "id": 346, - "name": "Block", - "src": "3605:148:1" - } - ], - "id": 347, - "name": "FunctionDefinition", - "src": "3538:215:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "div", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 348, - "name": "StructuredDocumentation", - "src": "3759:453:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 369, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 349, - "name": "ElementaryTypeName", - "src": "4230:7:1" - } - ], - "id": 350, - "name": "VariableDeclaration", - "src": "4230:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 369, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 351, - "name": "ElementaryTypeName", - "src": "4241:7:1" - } - ], - "id": 352, - "name": "VariableDeclaration", - "src": "4241:9:1" - } - ], - "id": 353, - "name": "ParameterList", - "src": "4229:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 369, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 354, - "name": "ElementaryTypeName", - "src": "4275:7:1" - } - ], - "id": 355, - "name": "VariableDeclaration", - "src": "4275:7:1" - } - ], - "id": 356, - "name": "ParameterList", - "src": "4274:9:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", - "typeString": "literal_string \"SafeMath: division by zero\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 357, - "name": "Identifier", - "src": "4294:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 352, - "type": "uint256", - "value": "b" - }, - "id": 358, - "name": "Identifier", - "src": "4302:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 359, - "name": "Literal", - "src": "4306:1:1" - } - ], - "id": 360, - "name": "BinaryOperation", - "src": "4302:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "536166654d6174683a206469766973696f6e206279207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SafeMath: division by zero\"", - "value": "SafeMath: division by zero" - }, - "id": 361, - "name": "Literal", - "src": "4309:28:1" - } - ], - "id": 362, - "name": "FunctionCall", - "src": "4294:44:1" - } - ], - "id": 363, - "name": "ExpressionStatement", - "src": "4294:44:1" - }, - { - "attributes": { - "functionReturnParameters": 356 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "/", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 350, - "type": "uint256", - "value": "a" - }, - "id": 364, - "name": "Identifier", - "src": "4355:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 352, - "type": "uint256", - "value": "b" - }, - "id": 365, - "name": "Identifier", - "src": "4359:1:1" - } - ], - "id": 366, - "name": "BinaryOperation", - "src": "4355:5:1" - } - ], - "id": 367, - "name": "Return", - "src": "4348:12:1" - } - ], - "id": 368, - "name": "Block", - "src": "4284:83:1" - } - ], - "id": 369, - "name": "FunctionDefinition", - "src": "4217:150:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "mod", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 370, - "name": "StructuredDocumentation", - "src": "4373:442:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 391, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 371, - "name": "ElementaryTypeName", - "src": "4833:7:1" - } - ], - "id": 372, - "name": "VariableDeclaration", - "src": "4833:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 391, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 373, - "name": "ElementaryTypeName", - "src": "4844:7:1" - } - ], - "id": 374, - "name": "VariableDeclaration", - "src": "4844:9:1" - } - ], - "id": 375, - "name": "ParameterList", - "src": "4832:22:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 391, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 376, - "name": "ElementaryTypeName", - "src": "4878:7:1" - } - ], - "id": 377, - "name": "VariableDeclaration", - "src": "4878:7:1" - } - ], - "id": 378, - "name": "ParameterList", - "src": "4877:9:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", - "typeString": "literal_string \"SafeMath: modulo by zero\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 379, - "name": "Identifier", - "src": "4897:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 374, - "type": "uint256", - "value": "b" - }, - "id": 380, - "name": "Identifier", - "src": "4905:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 381, - "name": "Literal", - "src": "4909:1:1" - } - ], - "id": 382, - "name": "BinaryOperation", - "src": "4905:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "536166654d6174683a206d6f64756c6f206279207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SafeMath: modulo by zero\"", - "value": "SafeMath: modulo by zero" - }, - "id": 383, - "name": "Literal", - "src": "4912:26:1" - } - ], - "id": 384, - "name": "FunctionCall", - "src": "4897:42:1" - } - ], - "id": 385, - "name": "ExpressionStatement", - "src": "4897:42:1" - }, - { - "attributes": { - "functionReturnParameters": 378 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "%", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 372, - "type": "uint256", - "value": "a" - }, - "id": 386, - "name": "Identifier", - "src": "4956:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 374, - "type": "uint256", - "value": "b" - }, - "id": 387, - "name": "Identifier", - "src": "4960:1:1" - } - ], - "id": 388, - "name": "BinaryOperation", - "src": "4956:5:1" - } - ], - "id": 389, - "name": "Return", - "src": "4949:12:1" - } - ], - "id": 390, - "name": "Block", - "src": "4887:81:1" - } - ], - "id": 391, - "name": "FunctionDefinition", - "src": "4820:148:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "sub", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." - }, - "id": 392, - "name": "StructuredDocumentation", - "src": "4974:453:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 415, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 393, - "name": "ElementaryTypeName", - "src": "5445:7:1" - } - ], - "id": 394, - "name": "VariableDeclaration", - "src": "5445:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 415, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 395, - "name": "ElementaryTypeName", - "src": "5456:7:1" - } - ], - "id": 396, - "name": "VariableDeclaration", - "src": "5456:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "errorMessage", - "overrides": null, - "scope": 415, - "stateVariable": false, - "storageLocation": "memory", - "type": "string", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 397, - "name": "ElementaryTypeName", - "src": "5467:6:1" - } - ], - "id": 398, - "name": "VariableDeclaration", - "src": "5467:26:1" - } - ], - "id": 399, - "name": "ParameterList", - "src": "5444:50:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 415, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 400, - "name": "ElementaryTypeName", - "src": "5518:7:1" - } - ], - "id": 401, - "name": "VariableDeclaration", - "src": "5518:7:1" - } - ], - "id": 402, - "name": "ParameterList", - "src": "5517:9:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 403, - "name": "Identifier", - "src": "5537:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 396, - "type": "uint256", - "value": "b" - }, - "id": 404, - "name": "Identifier", - "src": "5545:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 394, - "type": "uint256", - "value": "a" - }, - "id": 405, - "name": "Identifier", - "src": "5550:1:1" - } - ], - "id": 406, - "name": "BinaryOperation", - "src": "5545:6:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 398, - "type": "string memory", - "value": "errorMessage" - }, - "id": 407, - "name": "Identifier", - "src": "5553:12:1" - } - ], - "id": 408, - "name": "FunctionCall", - "src": "5537:29:1" - } - ], - "id": 409, - "name": "ExpressionStatement", - "src": "5537:29:1" - }, - { - "attributes": { - "functionReturnParameters": 402 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 394, - "type": "uint256", - "value": "a" - }, - "id": 410, - "name": "Identifier", - "src": "5583:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 396, - "type": "uint256", - "value": "b" - }, - "id": 411, - "name": "Identifier", - "src": "5587:1:1" - } - ], - "id": 412, - "name": "BinaryOperation", - "src": "5583:5:1" - } - ], - "id": 413, - "name": "Return", - "src": "5576:12:1" - } - ], - "id": 414, - "name": "Block", - "src": "5527:68:1" - } - ], - "id": 415, - "name": "FunctionDefinition", - "src": "5432:163:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "div", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 416, - "name": "StructuredDocumentation", - "src": "5601:646:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 439, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 417, - "name": "ElementaryTypeName", - "src": "6265:7:1" - } - ], - "id": 418, - "name": "VariableDeclaration", - "src": "6265:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 439, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 419, - "name": "ElementaryTypeName", - "src": "6276:7:1" - } - ], - "id": 420, - "name": "VariableDeclaration", - "src": "6276:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "errorMessage", - "overrides": null, - "scope": 439, - "stateVariable": false, - "storageLocation": "memory", - "type": "string", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 421, - "name": "ElementaryTypeName", - "src": "6287:6:1" - } - ], - "id": 422, - "name": "VariableDeclaration", - "src": "6287:26:1" - } - ], - "id": 423, - "name": "ParameterList", - "src": "6264:50:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 439, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 424, - "name": "ElementaryTypeName", - "src": "6338:7:1" - } - ], - "id": 425, - "name": "VariableDeclaration", - "src": "6338:7:1" - } - ], - "id": 426, - "name": "ParameterList", - "src": "6337:9:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 427, - "name": "Identifier", - "src": "6357:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 420, - "type": "uint256", - "value": "b" - }, - "id": 428, - "name": "Identifier", - "src": "6365:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 429, - "name": "Literal", - "src": "6369:1:1" - } - ], - "id": 430, - "name": "BinaryOperation", - "src": "6365:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 422, - "type": "string memory", - "value": "errorMessage" - }, - "id": 431, - "name": "Identifier", - "src": "6372:12:1" - } - ], - "id": 432, - "name": "FunctionCall", - "src": "6357:28:1" - } - ], - "id": 433, - "name": "ExpressionStatement", - "src": "6357:28:1" - }, - { - "attributes": { - "functionReturnParameters": 426 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "/", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 418, - "type": "uint256", - "value": "a" - }, - "id": 434, - "name": "Identifier", - "src": "6402:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 420, - "type": "uint256", - "value": "b" - }, - "id": 435, - "name": "Identifier", - "src": "6406:1:1" - } - ], - "id": 436, - "name": "BinaryOperation", - "src": "6402:5:1" - } - ], - "id": 437, - "name": "Return", - "src": "6395:12:1" - } - ], - "id": 438, - "name": "Block", - "src": "6347:67:1" - } - ], - "id": 439, - "name": "FunctionDefinition", - "src": "6252:162:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "mod", - "overrides": null, - "scope": 464, - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 440, - "name": "StructuredDocumentation", - "src": "6420:635:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "a", - "overrides": null, - "scope": 463, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 441, - "name": "ElementaryTypeName", - "src": "7073:7:1" - } - ], - "id": 442, - "name": "VariableDeclaration", - "src": "7073:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "b", - "overrides": null, - "scope": 463, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 443, - "name": "ElementaryTypeName", - "src": "7084:7:1" - } - ], - "id": 444, - "name": "VariableDeclaration", - "src": "7084:9:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "errorMessage", - "overrides": null, - "scope": 463, - "stateVariable": false, - "storageLocation": "memory", - "type": "string", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 445, - "name": "ElementaryTypeName", - "src": "7095:6:1" - } - ], - "id": 446, - "name": "VariableDeclaration", - "src": "7095:26:1" - } - ], - "id": 447, - "name": "ParameterList", - "src": "7072:50:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 463, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 448, - "name": "ElementaryTypeName", - "src": "7146:7:1" - } - ], - "id": 449, - "name": "VariableDeclaration", - "src": "7146:7:1" - } - ], - "id": 450, - "name": "ParameterList", - "src": "7145:9:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 451, - "name": "Identifier", - "src": "7165:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 444, - "type": "uint256", - "value": "b" - }, - "id": 452, - "name": "Identifier", - "src": "7173:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 453, - "name": "Literal", - "src": "7177:1:1" - } - ], - "id": 454, - "name": "BinaryOperation", - "src": "7173:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 446, - "type": "string memory", - "value": "errorMessage" - }, - "id": 455, - "name": "Identifier", - "src": "7180:12:1" - } - ], - "id": 456, - "name": "FunctionCall", - "src": "7165:28:1" - } - ], - "id": 457, - "name": "ExpressionStatement", - "src": "7165:28:1" - }, - { - "attributes": { - "functionReturnParameters": 450 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "%", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 442, - "type": "uint256", - "value": "a" - }, - "id": 458, - "name": "Identifier", - "src": "7210:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 444, - "type": "uint256", - "value": "b" - }, - "id": 459, - "name": "Identifier", - "src": "7214:1:1" - } - ], - "id": 460, - "name": "BinaryOperation", - "src": "7210:5:1" - } - ], - "id": 461, - "name": "Return", - "src": "7203:12:1" - } - ], - "id": 462, - "name": "Block", - "src": "7155:67:1" - } - ], - "id": 463, - "name": "FunctionDefinition", - "src": "7060:162:1" - } - ], - "id": 464, - "name": "ContractDefinition", - "src": "630:6594:1" - } - ], - "id": 465, - "name": "SourceUnit", - "src": "33:7192:1" - }, - "compiler": { - "name": "solc", - "version": "0.6.10+commit.00c0fcaf.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "3.4.3", - "updatedAt": "2021-10-13T15:44:47.623Z", - "devdoc": { - "details": "Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.", - "methods": {} - }, - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/build/contracts/UAIRegistry.json b/build/contracts/UAIRegistry.json deleted file mode 100644 index 19077cca0..000000000 --- a/build/contracts/UAIRegistry.json +++ /dev/null @@ -1,13284 +0,0 @@ -{ - "contractName": "UAIRegistry", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "assertionRegistryAddress", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "depositor", - "type": "address" - } - ], - "name": "TokensDepositedToAsset", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - } - ], - "name": "UAICreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "assertionRegistryAddress", - "type": "address" - } - ], - "name": "UAIRegistryInit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - } - ], - "name": "UAIUpdatedState", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "UAIstatus", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "assetRecords", - "outputs": [ - { - "internalType": "uint256", - "name": "creationTimestamp", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "alsoKnownAs", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "_type", - "type": "uint8" - }, - { - "internalType": "address", - "name": "controller", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "assetStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "_type", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "alsoKnownAs", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "rootHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "tokenAmount", - "type": "uint256" - } - ], - "name": "registerAsset", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "newStateCommitHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "rootHash", - "type": "bytes32" - } - ], - "name": "updateAssetState", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - } - ], - "name": "getAssetStateCommitHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - } - ], - "name": "getAssetController", - "outputs": [ - { - "internalType": "address", - "name": "controller", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - } - ], - "name": "getAssetAKA", - "outputs": [ - { - "internalType": "bytes32", - "name": "alsoKnownAs", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - } - ], - "name": "getAssetCreationTimestamp", - "outputs": [ - { - "internalType": "uint256", - "name": "creationTimestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [], - "name": "getAssertionRegistry", - "outputs": [ - { - "internalType": "address", - "name": "assertionRegistry", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - } - ], - "name": "depositTokens", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"assertionRegistryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"}],\"name\":\"TokensDepositedToAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"stateCommitHash\",\"type\":\"bytes32\"}],\"name\":\"UAICreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assertionRegistryAddress\",\"type\":\"address\"}],\"name\":\"UAIRegistryInit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"stateCommitHash\",\"type\":\"bytes32\"}],\"name\":\"UAIUpdatedState\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"UAIstatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"assetRecords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"creationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"alsoKnownAs\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"stateCommitHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"assetStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"}],\"name\":\"depositTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssertionRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assertionRegistry\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"}],\"name\":\"getAssetAKA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"alsoKnownAs\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"}],\"name\":\"getAssetController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"}],\"name\":\"getAssetCreationTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"creationTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"}],\"name\":\"getAssetStateCommitHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"stateCommitHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"alsoKnownAs\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateCommitHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"registerAsset\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"UAI\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateCommitHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"}],\"name\":\"updateAssetState\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"depositTokens(uint256,bytes32)\":{\"details\":\"Deposits tokens in ``amount`` to specific ``UAI``\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/UAIRegistry.sol\":\"UAIRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x15e2d5bd4c28a88548074c54d220e8086f638a71ed07e6b3ba5a70066fcf458d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90faf5851c02f9bd42c5bfb54d4f0421a2612f50ab80b2c4fa24fa3792071cc2\",\"dweb:/ipfs/QmRGM4F2PcGVF85aTfaA9YBhCHHDqrMhRjyp6fGeBTtirb\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"openzeppelin-solidity/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x61321d2c86346045bf394885ee3afeecc65f9daad2694bc19110967588fd7b5d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1703b877203e0447ede72dcf73f1c4f2089b415bd1c44877904128a64fafed5b\",\"dweb:/ipfs/QmaZoYDo2FWtKcwCc9zuabU6zri8KV9xJrhU614d93sLid\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x2d99a0deb6648c34fbc66d6ac4a2d64798d7a5321b45624f6736fadc63da1962\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcdce5ede1e5e650d174ec0b35be7d47b6a50f30bc895ef0d9e59fb75052e45\",\"dweb:/ipfs/QmQ2XFsDLTYqfEdw7pYzHiGtFRY11yQm4b6ynYgKqDxeB8\"]},\"openzeppelin-solidity/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"project:/contracts/DKGcontract.sol\":{\"keccak256\":\"0xea0c3c1edba3277ff8a18e50b054ab4d2e1f9434b2554270a4cccb3edb0d9ef3\",\"urls\":[\"bzz-raw://259759777c8a56dae6f5980dd9b6a27725636643e6cc54b0fd6e6f3e997176c6\",\"dweb:/ipfs/QmWzcVDUJ8ymwT6dYd15VhpyZsB9WeCs9BeomSVxr5Cer7\"]},\"project:/contracts/UAIRegistry.sol\":{\"keccak256\":\"0xc1f3db75475a1fab7aef0b5cf05e3b51cd88da6650d8c86f2c407f6c233e4c1e\",\"urls\":[\"bzz-raw://e9d01a85357bf1630109d13100a7d162e2ebd0c600db5180c83d8d3bb2428ab8\",\"dweb:/ipfs/QmZh1YAkw9K9TjUAvPpZYuTLeEt7qfuTNy2KgHR7kzq5aj\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b506040516119af3803806119af8339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050600061005e61027d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561013657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561017057600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f52db5c2cb9235be3e8a3fe47f4ec4bc55b5e28aa119b750b0e766b1cb00c9aa760405160405180910390a25050610285565b600033905090565b61171b806102946000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806377636d1d1161008c5780638da5cb5b116100665780638da5cb5b146103bf578063a9cd6a2d146103f3578063d15b223e14610449578063f2fde38b14610481576100ea565b806377636d1d146102ae57806378e98392146103065780637f58afc81461037d576100ea565b806334e5197b116100c857806334e5197b146101de57806352569b9d146102205780636f3a922914610262578063715018a6146102a4576100ea565b806309600fa6146100ef57806309added7146101665780632f1704bc146101aa575b600080fd5b61011b6004803603602081101561010557600080fd5b81019080803590602001909291905050506104c5565b604051808681526020018581526020018460ff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390f35b6101926004803603602081101561017c57600080fd5b8101908080359060200190929190505050610528565b60405180821515815260200191505060405180910390f35b6101b2610548565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61020a600480360360208110156101f457600080fd5b8101908080359060200190929190505050610572565b6040518082815260200191505060405180910390f35b61024c6004803603602081101561023657600080fd5b810190808035906020019092919050505061058a565b6040518082815260200191505060405180910390f35b61028e6004803603602081101561027857600080fd5b81019080803590602001909291905050506105aa565b6040518082815260200191505060405180910390f35b6102ac6105ca565b005b6102da600480360360208110156102c457600080fd5b8101908080359060200190929190505050610737565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610367600480360360c081101561031c57600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610777565b6040518082815260200191505060405180910390f35b6103a96004803603602081101561039357600080fd5b8101908080359060200190929190505050610b71565b6040518082815260200191505060405180910390f35b6103c7610b91565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104336004803603606081101561040957600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610bba565b6040518082815260200191505060405180910390f35b61047f6004803603604081101561045f57600080fd5b810190808035906020019092919080359060200190929190505050610e55565b005b6104c36004803603602081101561049757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ee565b005b60046020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905085565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60066020528060005260406000206000915090505481565b600060046000838152602001908152602001600020600301549050919050565b600060046000838152602001908152602001600020600101549050919050565b6105d26114e0565b73ffffffffffffffffffffffffffffffffffffffff166105f0610b91565b73ffffffffffffffffffffffffffffffffffffffff1614610679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006004600083815260200190815260200160002060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060001b8714156107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5541492063616e6e6f74206265207a65726f000000000000000000000000000081525060200191505060405180910390fd5b60038660ff161061084e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116a46021913960400191505060405180910390fd5b6000801b8514156108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f616c736f4b6e6f776e41732063616e6e6f74206265207a65726f00000000000081525060200191505060405180910390fd5b6000801b841415610940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f7374617465436f6d6d6974486173682063616e6e6f74206265207a65726f000081525060200191505060405180910390fd5b600015156005600089815260200190815260200160002060009054906101000a900460ff1615151461097157600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f164c4368585336001806040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b50505050836004600089815260200190815260200160002060030181905550856004600089815260200190815260200160002060020160006101000a81548160ff021916908360ff160217905550846004600089815260200190815260200160002060010181905550336004600089815260200190815260200160002060020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600460008981526020019081526020016000206000018190555060016005600089815260200190815260200160002060006101000a81548160ff02191690831515021790555083877f2f87578a4aeec4a0b61bbcea1767fec00fa79a35cf600b258509e25acdaba8e760405160405180910390a38690509695505050505050565b600060046000838152602001908152602001600020600001549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060001b841415610c35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5541492063616e6e6f74206265207a65726f000000000000000000000000000081525060200191505060405180910390fd5b600115156005600086815260200190815260200160002060009054906101000a900460ff16151514610ccf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4173736574206d7573742065786973740000000000000000000000000000000081525060200191505060405180910390fd5b6000801b831415610d2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116c56021913960400191505060405180910390fd5b610d3584336114e8565b610d3e57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f164c4368484336001806040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b158015610dea57600080fd5b505af1158015610dfe573d6000803e3d6000fd5b5050505082600460008681526020019081526020016000206003018190555082847fa83f066abfa07a77196c29bd4b7aab88f194feaa03d9769ec2ceccf6701d06de60405160405180910390a38390509392505050565b60008211610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416d6f756e742063616e6e6f74206265207a65726f000000000000000000000081525060200191505060405180910390fd5b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d6020811015610f9d57600080fd5b81019080805190602001909291905050501015611005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180611643603e913960400191505060405180910390fd5b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561108f57600080fd5b505afa1580156110a3573d6000803e3d6000fd5b505050506040513d60208110156110b957600080fd5b81019080805190602001909291905050501015611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611606603d913960400191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156111d457600080fd5b505af11580156111e8573d6000803e3d6000fd5b505050506040513d60208110156111fe57600080fd5b8101908080519060200190929190505050905080611267576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116816023913960400191505060405180910390fd5b61128d83600660008581526020019081526020016000205461155790919063ffffffff16565b60066000848152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1683837f2460c4e801cd784222555963fc8a1f1497f9ce3b23446fa14da62d317098933360405160405180910390a4505050565b6112f66114e0565b73ffffffffffffffffffffffffffffffffffffffff16611314610b91565b73ffffffffffffffffffffffffffffffffffffffff161461139d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611423576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115e06026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b60006004600084815260200190815260200160002060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000808284019050838110156115d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737353656e6465722062616c616e6365206d75737420626520657175616c20746f206f7220686967686572207468616e2063686f73656e20616d6f756e742153656e64657220616c6c6f77616e6365206d75737420626520657175616c20746f206f7220686967686572207468616e2063686f73656e20616d6f756e74546f6b656e207472616e73616374696f6e20657865637574696f6e206661696c6564215f7479706520616c6c6f7765642076616c7565733a20302c312c322028574950296e65775374617465436f6d6d6974486173682063616e6e6f74206265207a65726fa2646970667358221220b378009612cd1f68ed8ba5b39d8c4663c4577bff6db30499a5ca911b102a86b664736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806377636d1d1161008c5780638da5cb5b116100665780638da5cb5b146103bf578063a9cd6a2d146103f3578063d15b223e14610449578063f2fde38b14610481576100ea565b806377636d1d146102ae57806378e98392146103065780637f58afc81461037d576100ea565b806334e5197b116100c857806334e5197b146101de57806352569b9d146102205780636f3a922914610262578063715018a6146102a4576100ea565b806309600fa6146100ef57806309added7146101665780632f1704bc146101aa575b600080fd5b61011b6004803603602081101561010557600080fd5b81019080803590602001909291905050506104c5565b604051808681526020018581526020018460ff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019550505050505060405180910390f35b6101926004803603602081101561017c57600080fd5b8101908080359060200190929190505050610528565b60405180821515815260200191505060405180910390f35b6101b2610548565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61020a600480360360208110156101f457600080fd5b8101908080359060200190929190505050610572565b6040518082815260200191505060405180910390f35b61024c6004803603602081101561023657600080fd5b810190808035906020019092919050505061058a565b6040518082815260200191505060405180910390f35b61028e6004803603602081101561027857600080fd5b81019080803590602001909291905050506105aa565b6040518082815260200191505060405180910390f35b6102ac6105ca565b005b6102da600480360360208110156102c457600080fd5b8101908080359060200190929190505050610737565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610367600480360360c081101561031c57600080fd5b8101908080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610777565b6040518082815260200191505060405180910390f35b6103a96004803603602081101561039357600080fd5b8101908080359060200190929190505050610b71565b6040518082815260200191505060405180910390f35b6103c7610b91565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104336004803603606081101561040957600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610bba565b6040518082815260200191505060405180910390f35b61047f6004803603604081101561045f57600080fd5b810190808035906020019092919080359060200190929190505050610e55565b005b6104c36004803603602081101561049757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ee565b005b60046020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905085565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60066020528060005260406000206000915090505481565b600060046000838152602001908152602001600020600301549050919050565b600060046000838152602001908152602001600020600101549050919050565b6105d26114e0565b73ffffffffffffffffffffffffffffffffffffffff166105f0610b91565b73ffffffffffffffffffffffffffffffffffffffff1614610679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006004600083815260200190815260200160002060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060001b8714156107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5541492063616e6e6f74206265207a65726f000000000000000000000000000081525060200191505060405180910390fd5b60038660ff161061084e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116a46021913960400191505060405180910390fd5b6000801b8514156108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f616c736f4b6e6f776e41732063616e6e6f74206265207a65726f00000000000081525060200191505060405180910390fd5b6000801b841415610940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f7374617465436f6d6d6974486173682063616e6e6f74206265207a65726f000081525060200191505060405180910390fd5b600015156005600089815260200190815260200160002060009054906101000a900460ff1615151461097157600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f164c4368585336001806040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b50505050836004600089815260200190815260200160002060030181905550856004600089815260200190815260200160002060020160006101000a81548160ff021916908360ff160217905550846004600089815260200190815260200160002060010181905550336004600089815260200190815260200160002060020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600460008981526020019081526020016000206000018190555060016005600089815260200190815260200160002060006101000a81548160ff02191690831515021790555083877f2f87578a4aeec4a0b61bbcea1767fec00fa79a35cf600b258509e25acdaba8e760405160405180910390a38690509695505050505050565b600060046000838152602001908152602001600020600001549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060001b841415610c35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5541492063616e6e6f74206265207a65726f000000000000000000000000000081525060200191505060405180910390fd5b600115156005600086815260200190815260200160002060009054906101000a900460ff16151514610ccf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4173736574206d7573742065786973740000000000000000000000000000000081525060200191505060405180910390fd5b6000801b831415610d2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116c56021913960400191505060405180910390fd5b610d3584336114e8565b610d3e57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f164c4368484336001806040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200195505050505050600060405180830381600087803b158015610dea57600080fd5b505af1158015610dfe573d6000803e3d6000fd5b5050505082600460008681526020019081526020016000206003018190555082847fa83f066abfa07a77196c29bd4b7aab88f194feaa03d9769ec2ceccf6701d06de60405160405180910390a38390509392505050565b60008211610ecb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416d6f756e742063616e6e6f74206265207a65726f000000000000000000000081525060200191505060405180910390fd5b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d6020811015610f9d57600080fd5b81019080805190602001909291905050501015611005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180611643603e913960400191505060405180910390fd5b81600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561108f57600080fd5b505afa1580156110a3573d6000803e3d6000fd5b505050506040513d60208110156110b957600080fd5b81019080805190602001909291905050501015611121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611606603d913960400191505060405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156111d457600080fd5b505af11580156111e8573d6000803e3d6000fd5b505050506040513d60208110156111fe57600080fd5b8101908080519060200190929190505050905080611267576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116816023913960400191505060405180910390fd5b61128d83600660008581526020019081526020016000205461155790919063ffffffff16565b60066000848152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1683837f2460c4e801cd784222555963fc8a1f1497f9ce3b23446fa14da62d317098933360405160405180910390a4505050565b6112f66114e0565b73ffffffffffffffffffffffffffffffffffffffff16611314610b91565b73ffffffffffffffffffffffffffffffffffffffff161461139d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611423576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115e06026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b60006004600084815260200190815260200160002060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000808284019050838110156115d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737353656e6465722062616c616e6365206d75737420626520657175616c20746f206f7220686967686572207468616e2063686f73656e20616d6f756e742153656e64657220616c6c6f77616e6365206d75737420626520657175616c20746f206f7220686967686572207468616e2063686f73656e20616d6f756e74546f6b656e207472616e73616374696f6e20657865637574696f6e206661696c6564215f7479706520616c6c6f7765642076616c7565733a20302c312c322028574950296e65775374617465436f6d6d6974486173682063616e6e6f74206265207a65726fa2646970667358221220b378009612cd1f68ed8ba5b39d8c4663c4577bff6db30499a5ca911b102a86b664736f6c63430007060033", - "immutableReferences": {}, - "generatedSources": [], - "deployedGeneratedSources": [], - "sourceMap": "623:4983:8:-:0;;;1526:365;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;884:17:0;904:12;:10;;;:12;;:::i;:::-;884:32;;935:9;926:6;;:18;;;;;;;;;;;;;;;;;;992:9;959:43;;988:1;959:43;;;;;;;;;;;;850:159;1636:1:8;1614:24;;:12;:24;;;;1606:33;;;;;;1685:1;1651:36;;:24;:36;;;;1643:45;;;;;;1708:12;1693:5;;:28;;;;;;;;;;;;;;;;;;1752:24;1725;;:51;;;;;;;;;;;;;;;;;;1812:24;1780:17;;:57;;;;;;;;;;;;;;;;;;1862:24;1846:41;;;;;;;;;;;;1526:365;;623:4983;;598:104:6;651:15;685:10;678:17;;598:104;:::o;623:4983:8:-;;;;;;;", - "deployedSourceMap": "623:4983:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4128:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1141:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3593:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3860:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1717:145:0;;;:::i;:::-;;3734:123:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1894:1092;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3981:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1085:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2991:586:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4825:776;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2011:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1042:51:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1096:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4128:117::-;4180:25;4217:24;;;;;;;;;;;4210:31;;4128:117;:::o;1141:45::-;;;;;;;;;;;;;;;;;:::o;3593:138::-;3659:23;3694:12;:17;3707:3;3694:17;;;;;;;;;;;:33;;;3687:40;;3593:138;;;:::o;3860:118::-;3914:19;3945:12;:17;3958:3;3945:17;;;;;;;;;;;:29;;;3938:36;;3860:118;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1786:40;;1807:6;::::0;::::1;;;;;;;;1786:40;;;;;;;;;;;;1853:1;1836:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1717:145::o:0;3734:123:8:-;3795:18;3825:12;:17;3838:3;3825:17;;;;;;;;;;;:28;;;;;;;;;;;;3818:35;;3734:123;;;:::o;1894:1092::-;2044:7;2070:1;2065:6;;:3;:6;;2057:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2114:1;2106:5;:9;;;2098:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2178:1;2165:14;;:11;:14;;2157:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:1;2222:18;;:15;:18;;2214:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2305:5;2287:23;;:9;:14;2297:3;2287:14;;;;;;;;;;;;;;;;;;;;;:23;;;2279:33;;;;;;2472:17;;;;;;;;;;;:39;;;2512:15;2529:8;2547:10;2560:1;2563;2472:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2649:15;2613:12;:17;2626:3;2613:17;;;;;;;;;;;:33;;:51;;;;2694:5;2668:12;:17;2681:3;2668:17;;;;;;;;;;;:23;;;:31;;;;;;;;;;;;;;;;;;2735:11;2703:12;:17;2716:3;2703:17;;;;;;;;;;;:29;;:43;;;;2781:10;2750:12;:17;2763:3;2750:17;;;;;;;;;;;:28;;;:41;;;;;;;;;;;;;;;;;;2885:15;2847:12;:17;2860:3;2847:17;;;;;;;;;;;:35;;:53;;;;2921:4;2904:9;:14;2914:3;2904:14;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2951:15;2946:3;2935:32;;;;;;;;;;2979:3;2972:10;;1894:1092;;;;;;;;:::o;3981:144::-;4049:25;4086:12;:17;4099:3;4086:17;;;;;;;;;;;:35;;;4079:42;;3981:144;;;:::o;1085:85:0:-;1131:7;1157:6;;;;;;;;;;;1150:13;;1085:85;:::o;2991:586:8:-;3092:7;3119:1;3114:6;;:3;:6;;3106:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3173:4;3155:22;;:9;:14;3165:3;3155:14;;;;;;;;;;;;;;;;;;;;;:22;;;3147:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3231:1;3211:21;;:18;:21;;3203:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3282:23;3290:3;3294:10;3282:7;:23::i;:::-;3274:32;;;;;;3313:17;;;;;;;;;;;:39;;;3353:18;3373:8;3383:10;3395:1;3398;3313:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3451:18;3414:12;:17;3427:3;3414:17;;;;;;;;;;;:33;;:55;;;;3539:18;3534:3;3518:40;;;;;;;;;;3570:3;3563:10;;2991:586;;;;;:::o;4825:776::-;4908:1;4901:6;:8;4893:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4997:6;4951:5;;;;;;;;;;;:15;;;4967:10;4987:4;4951:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:52;;4943:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5117:6;5086:5;;;;;;;;;;;:15;;;5102:10;5086:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;5078:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5198:23;5224:5;;;;;;;;;;;:18;;;5243:10;5263:4;5270:6;5224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5198:79;;5293:18;5285:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5514:27;5534:6;5514:10;:15;5525:3;5514:15;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;5496:10;:15;5507:3;5496:15;;;;;;;;;;;:45;;;;5585:10;5550:46;;5578:6;5573:3;5550:46;;;;;;;;;;4825:776;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;1297:23;;:7;:5;:7::i;:::-;:23;;;1289:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2119:1:::1;2099:22;;:8;:22;;;;2091:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:8;2179:38;;2200:6;::::0;::::1;;;;;;;;2179:38;;;;;;;;;;;;2236:8;2227:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2011:240:::0;:::o;598:104:6:-;651:15;685:10;678:17;;598:104;:::o;4614:129:8:-;4677:4;4707:12;:17;4720:3;4707:17;;;;;;;;;;;:28;;;;;;;;;;;;4698:37;;:5;:37;;;4691:44;;4614:129;;;;:::o;2690:175:2:-;2748:7;2767:9;2783:1;2779;:5;2767:17;;2807:1;2802;:6;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2850:8;;;2690:175;;;;:::o", - "source": "pragma solidity >=0.6.0 <0.8.0;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC1155/IERC1155.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/access/Ownable.sol\";\nimport \"./DKGcontract.sol\";\n\n/*\n\nUAI/UALs essentially are:\n\n- DID/DID URLs native to the OriginTrail DKG\n- uniquely identify physical or digital assets (DID subjects)\n- have one or more \"owners\" (DID controllers)\n\nThe specification for UAI/UALs is currently WIP.\n\n*/\n\ncontract UAIRegistry is Ownable {\n\n\tenum AssetType{\n\t\tNative,\n\t\tERC721,\n\t\tERC1155\n\t}\n\n\tusing SafeMath for uint256;\n\tIERC20 token;\n\tDKGcontract AssertionRegistry;\n\taddress AssertionRegistryAddress;\n\n\tstruct AssetRecord{\n\t\tuint256 creationTimestamp;\n\t\tbytes32 alsoKnownAs; // alternative ID, as defined in DID-core spec, PoC address + tokenURI\n\t\tuint8 _type;\n\t\taddress controller; // tbd \n\t\tbytes32 stateCommitHash;\n\t}\n\n\tmapping(bytes32 => AssetRecord) public assetRecords;\n\tmapping(bytes32 => bool) public UAIstatus; \n\tmapping(bytes32 => uint256) public assetStake; \n\t\n\n\t// events\n\tevent UAIRegistryInit(address indexed assertionRegistryAddress);\n\tevent UAICreated(bytes32 indexed UAI, bytes32 indexed stateCommitHash);\n\tevent UAIUpdatedState(bytes32 indexed UAI, bytes32 indexed stateCommitHash );\n\tevent TokensDepositedToAsset(bytes32 indexed UAI, uint256 indexed amount, address indexed depositor);\n\n\tconstructor(address tokenAddress, address assertionRegistryAddress) public {\n\t\trequire(tokenAddress!=address(0));\n\t\trequire(assertionRegistryAddress!=address(0));\n\n\t\ttoken = IERC20(tokenAddress);\n\t\tAssertionRegistryAddress = assertionRegistryAddress;\n\t\tAssertionRegistry = DKGcontract(assertionRegistryAddress);\n\t\temit UAIRegistryInit(assertionRegistryAddress);\n\t}\n\n\tfunction registerAsset(bytes32 UAI, uint8 _type, bytes32 alsoKnownAs, bytes32 stateCommitHash, bytes32 rootHash, uint256 tokenAmount) public returns (bytes32){\n\n\t\trequire(UAI!=0, \"UAI cannot be zero\");\n\t\trequire(_type < 3, \"_type allowed values: 0,1,2 (WIP)\");\n\t\trequire(alsoKnownAs!=0, \"alsoKnownAs cannot be zero\");\n\t\trequire(stateCommitHash!=0, \"stateCommitHash cannot be zero\");\n\t\trequire(UAIstatus[UAI] == false ); // should not be possible to register existing asset again\n\n\t\t//bytes32 UAI = createUAI(_type,alsoKnownAs);\n\n\t\t// depositTokens(tokenAmount, UAI); // todo\n\n\t\tAssertionRegistry.createAssertionRecord(stateCommitHash, rootHash, address(msg.sender), 1, 1); // todo: update when DKGcontract is updated\n\t\tassetRecords[UAI].stateCommitHash = stateCommitHash;\n\t\tassetRecords[UAI]._type = _type;\n\t\tassetRecords[UAI].alsoKnownAs = alsoKnownAs;\n\t\tassetRecords[UAI].controller = msg.sender; // should update with AssetControllerProxy contract\n\t\tassetRecords[UAI].creationTimestamp = block.timestamp;\n\t\tUAIstatus[UAI] = true;\n\n\t\temit UAICreated(UAI, stateCommitHash);\n\n\t\treturn UAI;\n\t}\t\n\n\n\tfunction updateAssetState(bytes32 UAI, bytes32 newStateCommitHash, bytes32 rootHash) public returns (bytes32) {\n\n\t\trequire(UAI!=0, \"UAI cannot be zero\");\n\t\trequire(UAIstatus[UAI] == true, \"Asset must exist\" );\n\t\trequire(newStateCommitHash!=0, \"newStateCommitHash cannot be zero\");\n\t\trequire(isOwner(UAI,msg.sender));\n\t\t\n\t\tAssertionRegistry.createAssertionRecord(newStateCommitHash, rootHash, msg.sender, 1, 1); // UPDATE\n\t\tassetRecords[UAI].stateCommitHash = newStateCommitHash;\n\t\t// todo: store old commits somewhere\n\n\t\temit UAIUpdatedState(UAI, newStateCommitHash);\n\n\t\treturn UAI;\n\t}\n\n\n\t// getters\n\tfunction getAssetStateCommitHash(bytes32 UAI) public view returns(bytes32 stateCommitHash){\n\t\treturn assetRecords[UAI].stateCommitHash;\n\t}\n\n\tfunction getAssetController(bytes32 UAI) public view returns(address controller){\n\t\treturn assetRecords[UAI].controller;\n\t}\n\n\tfunction getAssetAKA(bytes32 UAI) public view returns(bytes32 alsoKnownAs){\n\t\treturn assetRecords[UAI].alsoKnownAs;\n\t}\n\n\tfunction getAssetCreationTimestamp(bytes32 UAI) public view returns(uint256 creationTimestamp){\n\t\treturn assetRecords[UAI].creationTimestamp;\n\t}\n\n\tfunction getAssertionRegistry() public view returns(address assertionRegistry){\n\t\treturn AssertionRegistryAddress;\n\t}\n\n\t// internal\n\n\n\t/**\n * @dev Should determine type of ``contractAddress``, if possible, returning enum AssetType\n */\n function determineType(address contractAddress, bytes32 id) internal returns (uint8){\n\t\treturn 0; // todo: implement detection of contract type\n\t}\n\n\t/**\n * @dev Returns bool checking if ``owner`` is controller of ``UAI``\n */\n function isOwner(bytes32 UAI, address owner) internal returns (bool) {\n \treturn owner == assetRecords[UAI].controller;\n }\n\n\t/**\n * @dev Deposits tokens in ``amount`` to specific ``UAI``\n */\n function depositTokens(uint256 amount, bytes32 UAI) public {\n\n \trequire(amount>0, \"Amount cannot be zero\");\n \trequire(token.allowance(msg.sender, address(this)) >= amount, \"Sender allowance must be equal to or higher than chosen amount\");\n \trequire(token.balanceOf(msg.sender) >= amount, \"Sender balance must be equal to or higher than chosen amount!\");\n\n \tbool transaction_result = token.transferFrom(msg.sender, address(this), amount);\n \trequire(transaction_result, \"Token transaction execution failed!\");\n\n\t\t// if (stake[msg.sender] == 0){\n\t\t// \tparticipant_indexes[msg.sender] = participants.length;\n\t\t// \tparticipants.push(msg.sender);\n\t\t// }\n\n\t\tassetStake[UAI] = assetStake[UAI].add(amount);\n\t\temit TokensDepositedToAsset(UAI, amount,msg.sender);\n\n\t}\t\n\n\n}", - "sourcePath": "/Users/miloskotlar/dkg-onchain-module-v6/contracts/UAIRegistry.sol", - "ast": { - "absolutePath": "project:/contracts/UAIRegistry.sol", - "exportedSymbols": { - "Context": [ - 815 - ], - "DKGcontract": [ - 1138 - ], - "IERC1155": [ - 598 - ], - "IERC165": [ - 121 - ], - "IERC20": [ - 676 - ], - "IERC721": [ - 792 - ], - "Ownable": [ - 109 - ], - "SafeMath": [ - 476 - ], - "UAIRegistry": [ - 1610 - ] - }, - "id": 1611, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1140, - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "0:31:8" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "id": 1141, - "nodeType": "ImportDirective", - "scope": 1611, - "sourceUnit": 677, - "src": "33:64:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", - "file": "openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", - "id": 1142, - "nodeType": "ImportDirective", - "scope": 1611, - "sourceUnit": 793, - "src": "98:66:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC1155/IERC1155.sol", - "file": "openzeppelin-solidity/contracts/token/ERC1155/IERC1155.sol", - "id": 1143, - "nodeType": "ImportDirective", - "scope": 1611, - "sourceUnit": 599, - "src": "165:68:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "id": 1144, - "nodeType": "ImportDirective", - "scope": 1611, - "sourceUnit": 477, - "src": "234:59:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "file": "openzeppelin-solidity/contracts/access/Ownable.sol", - "id": 1145, - "nodeType": "ImportDirective", - "scope": 1611, - "sourceUnit": 110, - "src": "294:60:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/DKGcontract.sol", - "file": "./DKGcontract.sol", - "id": 1146, - "nodeType": "ImportDirective", - "scope": 1611, - "sourceUnit": 1139, - "src": "355:27:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 1147, - "name": "Ownable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 109, - "src": "647:7:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$109", - "typeString": "contract Ownable" - } - }, - "id": 1148, - "nodeType": "InheritanceSpecifier", - "src": "647:7:8" - } - ], - "contractDependencies": [ - 109, - 815 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 1610, - "linearizedBaseContracts": [ - 1610, - 109, - 815 - ], - "name": "UAIRegistry", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "UAIRegistry.AssetType", - "id": 1152, - "members": [ - { - "id": 1149, - "name": "Native", - "nodeType": "EnumValue", - "src": "677:6:8" - }, - { - "id": 1150, - "name": "ERC721", - "nodeType": "EnumValue", - "src": "687:6:8" - }, - { - "id": 1151, - "name": "ERC1155", - "nodeType": "EnumValue", - "src": "697:7:8" - } - ], - "name": "AssetType", - "nodeType": "EnumDefinition", - "src": "659:48:8" - }, - { - "id": 1155, - "libraryName": { - "id": 1153, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 476, - "src": "716:8:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$476", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "710:27:8", - "typeName": { - "id": 1154, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "729:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "constant": false, - "id": 1157, - "mutability": "mutable", - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1610, - "src": "739:12:8", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - }, - "typeName": { - "id": 1156, - "name": "IERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 676, - "src": "739:6:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1159, - "mutability": "mutable", - "name": "AssertionRegistry", - "nodeType": "VariableDeclaration", - "scope": 1610, - "src": "754:29:8", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DKGcontract_$1138", - "typeString": "contract DKGcontract" - }, - "typeName": { - "id": 1158, - "name": "DKGcontract", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1138, - "src": "754:11:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DKGcontract_$1138", - "typeString": "contract DKGcontract" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1161, - "mutability": "mutable", - "name": "AssertionRegistryAddress", - "nodeType": "VariableDeclaration", - "scope": 1610, - "src": "786:32:8", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1160, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "786:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "canonicalName": "UAIRegistry.AssetRecord", - "id": 1172, - "members": [ - { - "constant": false, - "id": 1163, - "mutability": "mutable", - "name": "creationTimestamp", - "nodeType": "VariableDeclaration", - "scope": 1172, - "src": "844:25:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1162, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "844:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1165, - "mutability": "mutable", - "name": "alsoKnownAs", - "nodeType": "VariableDeclaration", - "scope": 1172, - "src": "873:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1164, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "873:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1167, - "mutability": "mutable", - "name": "_type", - "nodeType": "VariableDeclaration", - "scope": 1172, - "src": "967:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1166, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "967:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1169, - "mutability": "mutable", - "name": "controller", - "nodeType": "VariableDeclaration", - "scope": 1172, - "src": "982:18:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1168, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "982:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1171, - "mutability": "mutable", - "name": "stateCommitHash", - "nodeType": "VariableDeclaration", - "scope": 1172, - "src": "1012:23:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1170, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1012:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "name": "AssetRecord", - "nodeType": "StructDefinition", - "scope": 1610, - "src": "822:217:8", - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "09600fa6", - "id": 1176, - "mutability": "mutable", - "name": "assetRecords", - "nodeType": "VariableDeclaration", - "scope": 1610, - "src": "1042:51:8", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord)" - }, - "typeName": { - "id": 1175, - "keyType": { - "id": 1173, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1050:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1042:31:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord)" - }, - "valueType": { - "id": 1174, - "name": "AssetRecord", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1172, - "src": "1061:11:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage_ptr", - "typeString": "struct UAIRegistry.AssetRecord" - } - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "09added7", - "id": 1180, - "mutability": "mutable", - "name": "UAIstatus", - "nodeType": "VariableDeclaration", - "scope": 1610, - "src": "1096:41:8", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 1179, - "keyType": { - "id": 1177, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1104:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1096:24:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 1178, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1115:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "34e5197b", - "id": 1184, - "mutability": "mutable", - "name": "assetStake", - "nodeType": "VariableDeclaration", - "scope": 1610, - "src": "1141:45:8", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - }, - "typeName": { - "id": 1183, - "keyType": { - "id": 1181, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1149:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1141:27:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - }, - "valueType": { - "id": 1182, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1160:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "public" - }, - { - "anonymous": false, - "id": 1188, - "name": "UAIRegistryInit", - "nodeType": "EventDefinition", - "parameters": { - "id": 1187, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1186, - "indexed": true, - "mutability": "mutable", - "name": "assertionRegistryAddress", - "nodeType": "VariableDeclaration", - "scope": 1188, - "src": "1226:40:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1185, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1226:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1225:42:8" - }, - "src": "1204:64:8" - }, - { - "anonymous": false, - "id": 1194, - "name": "UAICreated", - "nodeType": "EventDefinition", - "parameters": { - "id": 1193, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1190, - "indexed": true, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1194, - "src": "1287:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1189, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1287:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1192, - "indexed": true, - "mutability": "mutable", - "name": "stateCommitHash", - "nodeType": "VariableDeclaration", - "scope": 1194, - "src": "1308:31:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1191, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1308:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1286:54:8" - }, - "src": "1270:71:8" - }, - { - "anonymous": false, - "id": 1200, - "name": "UAIUpdatedState", - "nodeType": "EventDefinition", - "parameters": { - "id": 1199, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1196, - "indexed": true, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1200, - "src": "1365:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1195, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1365:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1198, - "indexed": true, - "mutability": "mutable", - "name": "stateCommitHash", - "nodeType": "VariableDeclaration", - "scope": 1200, - "src": "1386:31:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1197, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1386:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "1364:55:8" - }, - "src": "1343:77:8" - }, - { - "anonymous": false, - "id": 1208, - "name": "TokensDepositedToAsset", - "nodeType": "EventDefinition", - "parameters": { - "id": 1207, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1202, - "indexed": true, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "1451:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1201, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1451:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1204, - "indexed": true, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "1472:22:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1203, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1472:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1206, - "indexed": true, - "mutability": "mutable", - "name": "depositor", - "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "1496:25:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1205, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1496:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1450:72:8" - }, - "src": "1422:101:8" - }, - { - "body": { - "id": 1253, - "nodeType": "Block", - "src": "1602:289:8", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1216, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1210, - "src": "1614:12:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1219, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1636:1:8", - "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": 1218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1628:7:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1217, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1628:7:8", - "typeDescriptions": {} - } - }, - "id": 1220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1628:10:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "1614:24:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1215, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1606:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1222, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1606:33:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1223, - "nodeType": "ExpressionStatement", - "src": "1606:33:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1230, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1225, - "name": "assertionRegistryAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1212, - "src": "1651:24:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1228, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1685:1:8", - "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": 1227, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1677:7:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1226, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1677:7:8", - "typeDescriptions": {} - } - }, - "id": 1229, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1677:10:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "1651:36:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1224, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "1643:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1643:45:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1232, - "nodeType": "ExpressionStatement", - "src": "1643:45:8" - }, - { - "expression": { - "id": 1237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1233, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1157, - "src": "1693:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1235, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1210, - "src": "1708:12:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1234, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 676, - "src": "1701:6:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$676_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1701:20:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "src": "1693:28:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "id": 1238, - "nodeType": "ExpressionStatement", - "src": "1693:28:8" - }, - { - "expression": { - "id": 1241, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1239, - "name": "AssertionRegistryAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1725:24:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1240, - "name": "assertionRegistryAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1212, - "src": "1752:24:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1725:51:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1242, - "nodeType": "ExpressionStatement", - "src": "1725:51:8" - }, - { - "expression": { - "id": 1247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1243, - "name": "AssertionRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "1780:17:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DKGcontract_$1138", - "typeString": "contract DKGcontract" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1245, - "name": "assertionRegistryAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1212, - "src": "1812:24:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1244, - "name": "DKGcontract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "1800:11:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_DKGcontract_$1138_$", - "typeString": "type(contract DKGcontract)" - } - }, - "id": 1246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1800:37:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_DKGcontract_$1138", - "typeString": "contract DKGcontract" - } - }, - "src": "1780:57:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DKGcontract_$1138", - "typeString": "contract DKGcontract" - } - }, - "id": 1248, - "nodeType": "ExpressionStatement", - "src": "1780:57:8" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1250, - "name": "assertionRegistryAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1212, - "src": "1862:24:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1249, - "name": "UAIRegistryInit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1188, - "src": "1846:15:8", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 1251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1846:41:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1252, - "nodeType": "EmitStatement", - "src": "1841:46:8" - } - ] - }, - "id": 1254, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1213, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1210, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 1254, - "src": "1538:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1209, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1538:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1212, - "mutability": "mutable", - "name": "assertionRegistryAddress", - "nodeType": "VariableDeclaration", - "scope": 1254, - "src": "1560:32:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1211, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1560:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1537:56:8" - }, - "returnParameters": { - "id": 1214, - "nodeType": "ParameterList", - "parameters": [], - "src": "1602:0:8" - }, - "scope": 1610, - "src": "1526:365:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1371, - "nodeType": "Block", - "src": "2052:934:8", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1272, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2065:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1273, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2070:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2065:6:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "5541492063616e6e6f74206265207a65726f", - "id": 1275, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2073:20:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8113bcaef69ad64d629f9f9842e44c0195bbec12498295833c352197bdf09d1b", - "typeString": "literal_string \"UAI cannot be zero\"" - }, - "value": "UAI cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8113bcaef69ad64d629f9f9842e44c0195bbec12498295833c352197bdf09d1b", - "typeString": "literal_string \"UAI cannot be zero\"" - } - ], - "id": 1271, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "2057:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2057:37:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1277, - "nodeType": "ExpressionStatement", - "src": "2057:37:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1281, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1279, - "name": "_type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1258, - "src": "2106:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "33", - "id": 1280, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2114:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "src": "2106:9:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "5f7479706520616c6c6f7765642076616c7565733a20302c312c32202857495029", - "id": 1282, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2117:35:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cf25b7c40ac58b98472d8ae4b6b8703daef3920dd8a8c2b2556b411059eb30d4", - "typeString": "literal_string \"_type allowed values: 0,1,2 (WIP)\"" - }, - "value": "_type allowed values: 0,1,2 (WIP)" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cf25b7c40ac58b98472d8ae4b6b8703daef3920dd8a8c2b2556b411059eb30d4", - "typeString": "literal_string \"_type allowed values: 0,1,2 (WIP)\"" - } - ], - "id": 1278, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "2098:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1283, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2098:55:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1284, - "nodeType": "ExpressionStatement", - "src": "2098:55:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1286, - "name": "alsoKnownAs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1260, - "src": "2165:11:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2178:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2165:14:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "616c736f4b6e6f776e41732063616e6e6f74206265207a65726f", - "id": 1289, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2181:28:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_889a93080df6c407ecf58a36aecc1ba986f5889f8941567948da9184911b568f", - "typeString": "literal_string \"alsoKnownAs cannot be zero\"" - }, - "value": "alsoKnownAs cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_889a93080df6c407ecf58a36aecc1ba986f5889f8941567948da9184911b568f", - "typeString": "literal_string \"alsoKnownAs cannot be zero\"" - } - ], - "id": 1285, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "2157:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2157:53:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1291, - "nodeType": "ExpressionStatement", - "src": "2157:53:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1293, - "name": "stateCommitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "2222:15:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1294, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2239:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2222:18:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "7374617465436f6d6d6974486173682063616e6e6f74206265207a65726f", - "id": 1296, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2242:32:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f0caaefff46a6fa6373daf0acae33c6a0d7f130841550573dc0a5b0fb9ec40cc", - "typeString": "literal_string \"stateCommitHash cannot be zero\"" - }, - "value": "stateCommitHash cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_f0caaefff46a6fa6373daf0acae33c6a0d7f130841550573dc0a5b0fb9ec40cc", - "typeString": "literal_string \"stateCommitHash cannot be zero\"" - } - ], - "id": 1292, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "2214:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2214:61:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1298, - "nodeType": "ExpressionStatement", - "src": "2214:61:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 1300, - "name": "UAIstatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1180, - "src": "2287:9:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1302, - "indexExpression": { - "id": 1301, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2297:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2287:14:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "66616c7365", - "id": 1303, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2305:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2287:23:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1299, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "2279:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2279:33:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1306, - "nodeType": "ExpressionStatement", - "src": "2279:33:8" - }, - { - "expression": { - "arguments": [ - { - "id": 1310, - "name": "stateCommitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "2512:15:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1311, - "name": "rootHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "2529:8:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "expression": { - "id": 1314, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "2547:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2547:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1313, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2539:7:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1312, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2539:7:8", - "typeDescriptions": {} - } - }, - "id": 1316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2539:19:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "hexValue": "31", - "id": 1317, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2560:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - { - "hexValue": "31", - "id": 1318, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2563:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "expression": { - "id": 1307, - "name": "AssertionRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "2472:17:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DKGcontract_$1138", - "typeString": "contract DKGcontract" - } - }, - "id": 1309, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "createAssertionRecord", - "nodeType": "MemberAccess", - "referencedDeclaration": 1015, - "src": "2472:39:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (bytes32,bytes32,address,uint256,uint256) external" - } - }, - "id": 1319, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2472:93:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1320, - "nodeType": "ExpressionStatement", - "src": "2472:93:8" - }, - { - "expression": { - "id": 1326, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 1321, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "2613:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1323, - "indexExpression": { - "id": 1322, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2626:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2613:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1324, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "stateCommitHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 1171, - "src": "2613:33:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1325, - "name": "stateCommitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "2649:15:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2613:51:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1327, - "nodeType": "ExpressionStatement", - "src": "2613:51:8" - }, - { - "expression": { - "id": 1333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 1328, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "2668:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1330, - "indexExpression": { - "id": 1329, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2681:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2668:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1331, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_type", - "nodeType": "MemberAccess", - "referencedDeclaration": 1167, - "src": "2668:23:8", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1332, - "name": "_type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1258, - "src": "2694:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2668:31:8", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1334, - "nodeType": "ExpressionStatement", - "src": "2668:31:8" - }, - { - "expression": { - "id": 1340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 1335, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "2703:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1337, - "indexExpression": { - "id": 1336, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2716:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2703:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1338, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "alsoKnownAs", - "nodeType": "MemberAccess", - "referencedDeclaration": 1165, - "src": "2703:29:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1339, - "name": "alsoKnownAs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1260, - "src": "2735:11:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "2703:43:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1341, - "nodeType": "ExpressionStatement", - "src": "2703:43:8" - }, - { - "expression": { - "id": 1348, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 1342, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "2750:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1344, - "indexExpression": { - "id": 1343, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2763:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2750:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1345, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "controller", - "nodeType": "MemberAccess", - "referencedDeclaration": 1169, - "src": "2750:28:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 1346, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "2781:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1347, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2781:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "2750:41:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1349, - "nodeType": "ExpressionStatement", - "src": "2750:41:8" - }, - { - "expression": { - "id": 1356, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 1350, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "2847:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1352, - "indexExpression": { - "id": 1351, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2860:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2847:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1353, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "creationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 1163, - "src": "2847:35:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 1354, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967292, - "src": "2885:5:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1355, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "2885:15:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2847:53:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1357, - "nodeType": "ExpressionStatement", - "src": "2847:53:8" - }, - { - "expression": { - "id": 1362, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 1358, - "name": "UAIstatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1180, - "src": "2904:9:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1360, - "indexExpression": { - "id": 1359, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2914:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2904:14:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 1361, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2921:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2904:21:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1363, - "nodeType": "ExpressionStatement", - "src": "2904:21:8" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1365, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2946:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1366, - "name": "stateCommitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1262, - "src": "2951:15:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1364, - "name": "UAICreated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "2935:10:8", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2935:32:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1368, - "nodeType": "EmitStatement", - "src": "2930:37:8" - }, - { - "expression": { - "id": 1369, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1256, - "src": "2979:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1270, - "id": 1370, - "nodeType": "Return", - "src": "2972:10:8" - } - ] - }, - "functionSelector": "78e98392", - "id": 1372, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "registerAsset", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1267, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1256, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1372, - "src": "1917:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1255, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1917:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1258, - "mutability": "mutable", - "name": "_type", - "nodeType": "VariableDeclaration", - "scope": 1372, - "src": "1930:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1257, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1930:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1260, - "mutability": "mutable", - "name": "alsoKnownAs", - "nodeType": "VariableDeclaration", - "scope": 1372, - "src": "1943:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1259, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1943:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1262, - "mutability": "mutable", - "name": "stateCommitHash", - "nodeType": "VariableDeclaration", - "scope": 1372, - "src": "1964:23:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1261, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1964:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1264, - "mutability": "mutable", - "name": "rootHash", - "nodeType": "VariableDeclaration", - "scope": 1372, - "src": "1989:16:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1263, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1989:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1266, - "mutability": "mutable", - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 1372, - "src": "2007:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1265, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2007:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1916:111:8" - }, - "returnParameters": { - "id": 1270, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1269, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1372, - "src": "2044:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1268, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2044:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "2043:9:8" - }, - "scope": 1610, - "src": "1894:1092:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1439, - "nodeType": "Block", - "src": "3101:476:8", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1384, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "3114:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1385, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3119:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3114:6:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "5541492063616e6e6f74206265207a65726f", - "id": 1387, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3122:20:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8113bcaef69ad64d629f9f9842e44c0195bbec12498295833c352197bdf09d1b", - "typeString": "literal_string \"UAI cannot be zero\"" - }, - "value": "UAI cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8113bcaef69ad64d629f9f9842e44c0195bbec12498295833c352197bdf09d1b", - "typeString": "literal_string \"UAI cannot be zero\"" - } - ], - "id": 1383, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "3106:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1388, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3106:37:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1389, - "nodeType": "ExpressionStatement", - "src": "3106:37:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 1391, - "name": "UAIstatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1180, - "src": "3155:9:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1393, - "indexExpression": { - "id": 1392, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "3165:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3155:14:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "74727565", - "id": 1394, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3173:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "3155:22:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4173736574206d757374206578697374", - "id": 1396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3179:18:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1288ba10f0c0a9fa84e2f581ad61c72d898b048e206b52821e5663686f23ff37", - "typeString": "literal_string \"Asset must exist\"" - }, - "value": "Asset must exist" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_1288ba10f0c0a9fa84e2f581ad61c72d898b048e206b52821e5663686f23ff37", - "typeString": "literal_string \"Asset must exist\"" - } - ], - "id": 1390, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "3147:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3147:52:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1398, - "nodeType": "ExpressionStatement", - "src": "3147:52:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1400, - "name": "newStateCommitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1376, - "src": "3211:18:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1401, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3231:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3211:21:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "6e65775374617465436f6d6d6974486173682063616e6e6f74206265207a65726f", - "id": 1403, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3234:35:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fa287c795401a9447e9af39b3f60c2649bae99888868237daa5c7cc28744941b", - "typeString": "literal_string \"newStateCommitHash cannot be zero\"" - }, - "value": "newStateCommitHash cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fa287c795401a9447e9af39b3f60c2649bae99888868237daa5c7cc28744941b", - "typeString": "literal_string \"newStateCommitHash cannot be zero\"" - } - ], - "id": 1399, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "3203:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3203:67:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1405, - "nodeType": "ExpressionStatement", - "src": "3203:67:8" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 1408, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "3290:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 1409, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "3294:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1410, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3294:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1407, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "3282:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) returns (bool)" - } - }, - "id": 1411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3282:23:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1406, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "3274:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3274:32:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1413, - "nodeType": "ExpressionStatement", - "src": "3274:32:8" - }, - { - "expression": { - "arguments": [ - { - "id": 1417, - "name": "newStateCommitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1376, - "src": "3353:18:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1418, - "name": "rootHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "3373:8:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "expression": { - "id": 1419, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "3383:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3383:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "hexValue": "31", - "id": 1421, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3395:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - { - "hexValue": "31", - "id": 1422, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3398:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "expression": { - "id": 1414, - "name": "AssertionRegistry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1159, - "src": "3313:17:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DKGcontract_$1138", - "typeString": "contract DKGcontract" - } - }, - "id": 1416, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "createAssertionRecord", - "nodeType": "MemberAccess", - "referencedDeclaration": 1015, - "src": "3313:39:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (bytes32,bytes32,address,uint256,uint256) external" - } - }, - "id": 1423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3313:87:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1424, - "nodeType": "ExpressionStatement", - "src": "3313:87:8" - }, - { - "expression": { - "id": 1430, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 1425, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "3414:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1427, - "indexExpression": { - "id": 1426, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "3427:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3414:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1428, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "stateCommitHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 1171, - "src": "3414:33:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1429, - "name": "newStateCommitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1376, - "src": "3451:18:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3414:55:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 1431, - "nodeType": "ExpressionStatement", - "src": "3414:55:8" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1433, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "3534:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1434, - "name": "newStateCommitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1376, - "src": "3539:18:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1432, - "name": "UAIUpdatedState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "3518:15:8", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 1435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3518:40:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1436, - "nodeType": "EmitStatement", - "src": "3513:45:8" - }, - { - "expression": { - "id": 1437, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "3570:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1382, - "id": 1438, - "nodeType": "Return", - "src": "3563:10:8" - } - ] - }, - "functionSelector": "a9cd6a2d", - "id": 1440, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "updateAssetState", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1379, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1374, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1440, - "src": "3017:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1373, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3017:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1376, - "mutability": "mutable", - "name": "newStateCommitHash", - "nodeType": "VariableDeclaration", - "scope": 1440, - "src": "3030:26:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1375, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3030:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1378, - "mutability": "mutable", - "name": "rootHash", - "nodeType": "VariableDeclaration", - "scope": 1440, - "src": "3058:16:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1377, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3058:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3016:59:8" - }, - "returnParameters": { - "id": 1382, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1381, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1440, - "src": "3092:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1380, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3092:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3091:9:8" - }, - "scope": 1610, - "src": "2991:586:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1452, - "nodeType": "Block", - "src": "3683:48:8", - "statements": [ - { - "expression": { - "expression": { - "baseExpression": { - "id": 1447, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "3694:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1449, - "indexExpression": { - "id": 1448, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "3707:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3694:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1450, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "stateCommitHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 1171, - "src": "3694:33:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1446, - "id": 1451, - "nodeType": "Return", - "src": "3687:40:8" - } - ] - }, - "functionSelector": "52569b9d", - "id": 1453, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssetStateCommitHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1443, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1442, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1453, - "src": "3626:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1441, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3626:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3625:13:8" - }, - "returnParameters": { - "id": 1446, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1445, - "mutability": "mutable", - "name": "stateCommitHash", - "nodeType": "VariableDeclaration", - "scope": 1453, - "src": "3659:23:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1444, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3659:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3658:25:8" - }, - "scope": 1610, - "src": "3593:138:8", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1465, - "nodeType": "Block", - "src": "3814:43:8", - "statements": [ - { - "expression": { - "expression": { - "baseExpression": { - "id": 1460, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "3825:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1462, - "indexExpression": { - "id": 1461, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1455, - "src": "3838:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3825:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1463, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "controller", - "nodeType": "MemberAccess", - "referencedDeclaration": 1169, - "src": "3825:28:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 1459, - "id": 1464, - "nodeType": "Return", - "src": "3818:35:8" - } - ] - }, - "functionSelector": "77636d1d", - "id": 1466, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssetController", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1456, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1455, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1466, - "src": "3762:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1454, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3762:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3761:13:8" - }, - "returnParameters": { - "id": 1459, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1458, - "mutability": "mutable", - "name": "controller", - "nodeType": "VariableDeclaration", - "scope": 1466, - "src": "3795:18:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1457, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3795:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3794:20:8" - }, - "scope": 1610, - "src": "3734:123:8", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1478, - "nodeType": "Block", - "src": "3934:44:8", - "statements": [ - { - "expression": { - "expression": { - "baseExpression": { - "id": 1473, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "3945:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1475, - "indexExpression": { - "id": 1474, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1468, - "src": "3958:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3945:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1476, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "alsoKnownAs", - "nodeType": "MemberAccess", - "referencedDeclaration": 1165, - "src": "3945:29:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1472, - "id": 1477, - "nodeType": "Return", - "src": "3938:36:8" - } - ] - }, - "functionSelector": "6f3a9229", - "id": 1479, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssetAKA", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1469, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1468, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1479, - "src": "3881:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1467, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3881:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3880:13:8" - }, - "returnParameters": { - "id": 1472, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1471, - "mutability": "mutable", - "name": "alsoKnownAs", - "nodeType": "VariableDeclaration", - "scope": 1479, - "src": "3914:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1470, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3914:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3913:21:8" - }, - "scope": 1610, - "src": "3860:118:8", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1491, - "nodeType": "Block", - "src": "4075:50:8", - "statements": [ - { - "expression": { - "expression": { - "baseExpression": { - "id": 1486, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "4086:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1488, - "indexExpression": { - "id": 1487, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1481, - "src": "4099:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4086:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1489, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "creationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 1163, - "src": "4086:35:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1485, - "id": 1490, - "nodeType": "Return", - "src": "4079:42:8" - } - ] - }, - "functionSelector": "7f58afc8", - "id": 1492, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssetCreationTimestamp", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1482, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1481, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1492, - "src": "4016:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1480, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4016:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "4015:13:8" - }, - "returnParameters": { - "id": 1485, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1484, - "mutability": "mutable", - "name": "creationTimestamp", - "nodeType": "VariableDeclaration", - "scope": 1492, - "src": "4049:25:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1483, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4049:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4048:27:8" - }, - "scope": 1610, - "src": "3981:144:8", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1499, - "nodeType": "Block", - "src": "4206:39:8", - "statements": [ - { - "expression": { - "id": 1497, - "name": "AssertionRegistryAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "4217:24:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 1496, - "id": 1498, - "nodeType": "Return", - "src": "4210:31:8" - } - ] - }, - "functionSelector": "2f1704bc", - "id": 1500, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAssertionRegistry", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1493, - "nodeType": "ParameterList", - "parameters": [], - "src": "4157:2:8" - }, - "returnParameters": { - "id": 1496, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1495, - "mutability": "mutable", - "name": "assertionRegistry", - "nodeType": "VariableDeclaration", - "scope": 1500, - "src": "4180:25:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1494, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4180:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "4179:27:8" - }, - "scope": 1610, - "src": "4128:117:8", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1512, - "nodeType": "Block", - "src": "4460:62:8", - "statements": [ - { - "expression": { - "hexValue": "30", - "id": 1510, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4471:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 1509, - "id": 1511, - "nodeType": "Return", - "src": "4464:8:8" - } - ] - }, - "documentation": { - "id": 1501, - "nodeType": "StructuredDocumentation", - "src": "4263:107:8", - "text": " @dev Should determine type of ``contractAddress``, if possible, returning enum AssetType" - }, - "id": 1513, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "determineType", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1506, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1503, - "mutability": "mutable", - "name": "contractAddress", - "nodeType": "VariableDeclaration", - "scope": 1513, - "src": "4399:23:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1502, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4399:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1505, - "mutability": "mutable", - "name": "id", - "nodeType": "VariableDeclaration", - "scope": 1513, - "src": "4424:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1504, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4424:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "4398:37:8" - }, - "returnParameters": { - "id": 1509, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1508, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1513, - "src": "4454:5:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1507, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4454:5:8", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "4453:7:8" - }, - "scope": 1610, - "src": "4376:146:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1530, - "nodeType": "Block", - "src": "4683:60:8", - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1523, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1518, - "src": "4698:5:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "baseExpression": { - "id": 1524, - "name": "assetRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1176, - "src": "4707:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AssetRecord_$1172_storage_$", - "typeString": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)" - } - }, - "id": 1526, - "indexExpression": { - "id": 1525, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1516, - "src": "4720:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4707:17:8", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AssetRecord_$1172_storage", - "typeString": "struct UAIRegistry.AssetRecord storage ref" - } - }, - "id": 1527, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "controller", - "nodeType": "MemberAccess", - "referencedDeclaration": 1169, - "src": "4707:28:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4698:37:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1522, - "id": 1529, - "nodeType": "Return", - "src": "4691:44:8" - } - ] - }, - "documentation": { - "id": 1514, - "nodeType": "StructuredDocumentation", - "src": "4525:83:8", - "text": " @dev Returns bool checking if ``owner`` is controller of ``UAI``" - }, - "id": 1531, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1519, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1516, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1531, - "src": "4631:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1515, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4631:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1518, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1531, - "src": "4644:13:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1517, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4644:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "4630:28:8" - }, - "returnParameters": { - "id": 1522, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1521, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1531, - "src": "4677:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1520, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4677:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4676:6:8" - }, - "scope": 1610, - "src": "4614:129:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1608, - "nodeType": "Block", - "src": "4884:717:8", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1540, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "4901:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 1541, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4908:1:8", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4901:8:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416d6f756e742063616e6e6f74206265207a65726f", - "id": 1543, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4911:23:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8beea76deddeff1012d90e1e8da369393f885b0575eb094a33da9912cc4bbb8b", - "typeString": "literal_string \"Amount cannot be zero\"" - }, - "value": "Amount cannot be zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8beea76deddeff1012d90e1e8da369393f885b0575eb094a33da9912cc4bbb8b", - "typeString": "literal_string \"Amount cannot be zero\"" - } - ], - "id": 1539, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "4893:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4893:42:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1545, - "nodeType": "ExpressionStatement", - "src": "4893:42:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1557, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "expression": { - "id": 1549, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "4967:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4967:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "arguments": [ - { - "id": 1553, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "4987:4:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_UAIRegistry_$1610", - "typeString": "contract UAIRegistry" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_UAIRegistry_$1610", - "typeString": "contract UAIRegistry" - } - ], - "id": 1552, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4979:7:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1551, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4979:7:8", - "typeDescriptions": {} - } - }, - "id": 1554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4979:13:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 1547, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1157, - "src": "4951:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "id": 1548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "allowance", - "nodeType": "MemberAccess", - "referencedDeclaration": 635, - "src": "4951:15:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", - "typeString": "function (address,address) view external returns (uint256)" - } - }, - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4951:42:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 1556, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "4997:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4951:52:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "53656e64657220616c6c6f77616e6365206d75737420626520657175616c20746f206f7220686967686572207468616e2063686f73656e20616d6f756e74", - "id": 1558, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5005:64:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_3bc5ac98536c45d410bf37692b674d7f6ad3249fabf29eadc142b2e562988389", - "typeString": "literal_string \"Sender allowance must be equal to or higher than chosen amount\"" - }, - "value": "Sender allowance must be equal to or higher than chosen amount" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3bc5ac98536c45d410bf37692b674d7f6ad3249fabf29eadc142b2e562988389", - "typeString": "literal_string \"Sender allowance must be equal to or higher than chosen amount\"" - } - ], - "id": 1546, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "4943:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4943:127:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1560, - "nodeType": "ExpressionStatement", - "src": "4943:127:8" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "expression": { - "id": 1564, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5102:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1565, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5102:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "id": 1562, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1157, - "src": "5086:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "id": 1563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 615, - "src": "5086:15:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 1566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5086:27:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 1567, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "5117:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5086:37:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "53656e6465722062616c616e6365206d75737420626520657175616c20746f206f7220686967686572207468616e2063686f73656e20616d6f756e7421", - "id": 1569, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5125:63:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_262e509abce0ea4c77b39344642b82be870ee6d03e35d57d1dee69295a1e383b", - "typeString": "literal_string \"Sender balance must be equal to or higher than chosen amount!\"" - }, - "value": "Sender balance must be equal to or higher than chosen amount!" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_262e509abce0ea4c77b39344642b82be870ee6d03e35d57d1dee69295a1e383b", - "typeString": "literal_string \"Sender balance must be equal to or higher than chosen amount!\"" - } - ], - "id": 1561, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "5078:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5078:111:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1571, - "nodeType": "ExpressionStatement", - "src": "5078:111:8" - }, - { - "assignments": [ - 1573 - ], - "declarations": [ - { - "constant": false, - "id": 1573, - "mutability": "mutable", - "name": "transaction_result", - "nodeType": "VariableDeclaration", - "scope": 1608, - "src": "5198:23:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1572, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5198:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 1584, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 1576, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5243:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5243:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "arguments": [ - { - "id": 1580, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967268, - "src": "5263:4:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_UAIRegistry_$1610", - "typeString": "contract UAIRegistry" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_UAIRegistry_$1610", - "typeString": "contract UAIRegistry" - } - ], - "id": 1579, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5255:7:8", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1578, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5255:7:8", - "typeDescriptions": {} - } - }, - "id": 1581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5255:13:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1582, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "5270:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1574, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1157, - "src": "5224:5:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$676", - "typeString": "contract IERC20" - } - }, - "id": 1575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 657, - "src": "5224:18:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" - } - }, - "id": 1583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5224:53:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5198:79:8" - }, - { - "expression": { - "arguments": [ - { - "id": 1586, - "name": "transaction_result", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1573, - "src": "5293:18:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "546f6b656e207472616e73616374696f6e20657865637574696f6e206661696c656421", - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5313:37:8", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c60aa67373380e582a977ce48d7156e19a6358c471790919f2371ebd75aaf7c7", - "typeString": "literal_string \"Token transaction execution failed!\"" - }, - "value": "Token transaction execution failed!" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c60aa67373380e582a977ce48d7156e19a6358c471790919f2371ebd75aaf7c7", - "typeString": "literal_string \"Token transaction execution failed!\"" - } - ], - "id": 1585, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "src": "5285:7:8", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5285:66:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1589, - "nodeType": "ExpressionStatement", - "src": "5285:66:8" - }, - { - "expression": { - "id": 1599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 1590, - "name": "assetStake", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "5496:10:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 1592, - "indexExpression": { - "id": 1591, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1536, - "src": "5507:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5496:15:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1597, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "5534:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "baseExpression": { - "id": 1593, - "name": "assetStake", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "5514:10:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 1595, - "indexExpression": { - "id": 1594, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1536, - "src": "5525:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5514:15:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 303, - "src": "5514:19:8", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1598, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5514:27:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5496:45:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1600, - "nodeType": "ExpressionStatement", - "src": "5496:45:8" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1602, - "name": "UAI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1536, - "src": "5573:3:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 1603, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1534, - "src": "5578:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 1604, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4294967281, - "src": "5585:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "5585:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1601, - "name": "TokensDepositedToAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1208, - "src": "5550:22:8", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_address_$returns$__$", - "typeString": "function (bytes32,uint256,address)" - } - }, - "id": 1606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5550:46:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1607, - "nodeType": "EmitStatement", - "src": "5545:51:8" - } - ] - }, - "documentation": { - "id": 1532, - "nodeType": "StructuredDocumentation", - "src": "4746:73:8", - "text": " @dev Deposits tokens in ``amount`` to specific ``UAI``" - }, - "functionSelector": "d15b223e", - "id": 1609, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "depositTokens", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1537, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1534, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1609, - "src": "4848:14:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1533, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4848:7:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1536, - "mutability": "mutable", - "name": "UAI", - "nodeType": "VariableDeclaration", - "scope": 1609, - "src": "4864:11:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1535, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4864:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "4847:29:8" - }, - "returnParameters": { - "id": 1538, - "nodeType": "ParameterList", - "parameters": [], - "src": "4884:0:8" - }, - "scope": 1610, - "src": "4825:776:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - } - ], - "scope": 1611, - "src": "623:4983:8" - } - ], - "src": "0:5606:8" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/UAIRegistry.sol", - "exportedSymbols": { - "Context": [ - 815 - ], - "DKGcontract": [ - 1138 - ], - "IERC1155": [ - 598 - ], - "IERC165": [ - 121 - ], - "IERC20": [ - 676 - ], - "IERC721": [ - 792 - ], - "Ownable": [ - 109 - ], - "SafeMath": [ - 476 - ], - "UAIRegistry": [ - 1610 - ] - } - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ] - }, - "id": 1140, - "name": "PragmaDirective", - "src": "0:31:8" - }, - { - "attributes": { - "SourceUnit": 677, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", - "scope": 1611, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1141, - "name": "ImportDirective", - "src": "33:64:8" - }, - { - "attributes": { - "SourceUnit": 793, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", - "file": "openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", - "scope": 1611, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1142, - "name": "ImportDirective", - "src": "98:66:8" - }, - { - "attributes": { - "SourceUnit": 599, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC1155/IERC1155.sol", - "file": "openzeppelin-solidity/contracts/token/ERC1155/IERC1155.sol", - "scope": 1611, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1143, - "name": "ImportDirective", - "src": "165:68:8" - }, - { - "attributes": { - "SourceUnit": 477, - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "scope": 1611, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1144, - "name": "ImportDirective", - "src": "234:59:8" - }, - { - "attributes": { - "SourceUnit": 110, - "absolutePath": "openzeppelin-solidity/contracts/access/Ownable.sol", - "file": "openzeppelin-solidity/contracts/access/Ownable.sol", - "scope": 1611, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1145, - "name": "ImportDirective", - "src": "294:60:8" - }, - { - "attributes": { - "SourceUnit": 1139, - "absolutePath": "project:/contracts/DKGcontract.sol", - "file": "./DKGcontract.sol", - "scope": 1611, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1146, - "name": "ImportDirective", - "src": "355:27:8" - }, - { - "attributes": { - "abstract": false, - "contractDependencies": [ - 109, - 815 - ], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 1610, - 109, - 815 - ], - "name": "UAIRegistry", - "scope": 1611 - }, - "children": [ - { - "attributes": {}, - "children": [ - { - "attributes": { - "name": "Ownable", - "referencedDeclaration": 109, - "type": "contract Ownable" - }, - "id": 1147, - "name": "UserDefinedTypeName", - "src": "647:7:8" - } - ], - "id": 1148, - "name": "InheritanceSpecifier", - "src": "647:7:8" - }, - { - "attributes": { - "canonicalName": "UAIRegistry.AssetType", - "name": "AssetType" - }, - "children": [ - { - "attributes": { - "name": "Native" - }, - "id": 1149, - "name": "EnumValue", - "src": "677:6:8" - }, - { - "attributes": { - "name": "ERC721" - }, - "id": 1150, - "name": "EnumValue", - "src": "687:6:8" - }, - { - "attributes": { - "name": "ERC1155" - }, - "id": 1151, - "name": "EnumValue", - "src": "697:7:8" - } - ], - "id": 1152, - "name": "EnumDefinition", - "src": "659:48:8" - }, - { - "children": [ - { - "attributes": { - "name": "SafeMath", - "referencedDeclaration": 476, - "type": "library SafeMath" - }, - "id": 1153, - "name": "UserDefinedTypeName", - "src": "716:8:8" - }, - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1154, - "name": "ElementaryTypeName", - "src": "729:7:8" - } - ], - "id": 1155, - "name": "UsingForDirective", - "src": "710:27:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "token", - "scope": 1610, - "stateVariable": true, - "storageLocation": "default", - "type": "contract IERC20", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "IERC20", - "referencedDeclaration": 676, - "type": "contract IERC20" - }, - "id": 1156, - "name": "UserDefinedTypeName", - "src": "739:6:8" - } - ], - "id": 1157, - "name": "VariableDeclaration", - "src": "739:12:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "AssertionRegistry", - "scope": 1610, - "stateVariable": true, - "storageLocation": "default", - "type": "contract DKGcontract", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "DKGcontract", - "referencedDeclaration": 1138, - "type": "contract DKGcontract" - }, - "id": 1158, - "name": "UserDefinedTypeName", - "src": "754:11:8" - } - ], - "id": 1159, - "name": "VariableDeclaration", - "src": "754:29:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "AssertionRegistryAddress", - "scope": 1610, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1160, - "name": "ElementaryTypeName", - "src": "786:7:8" - } - ], - "id": 1161, - "name": "VariableDeclaration", - "src": "786:32:8" - }, - { - "attributes": { - "canonicalName": "UAIRegistry.AssetRecord", - "name": "AssetRecord", - "scope": 1610, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "creationTimestamp", - "scope": 1172, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1162, - "name": "ElementaryTypeName", - "src": "844:7:8" - } - ], - "id": 1163, - "name": "VariableDeclaration", - "src": "844:25:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "alsoKnownAs", - "scope": 1172, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1164, - "name": "ElementaryTypeName", - "src": "873:7:8" - } - ], - "id": 1165, - "name": "VariableDeclaration", - "src": "873:19:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_type", - "scope": 1172, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1166, - "name": "ElementaryTypeName", - "src": "967:5:8" - } - ], - "id": 1167, - "name": "VariableDeclaration", - "src": "967:11:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "controller", - "scope": 1172, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1168, - "name": "ElementaryTypeName", - "src": "982:7:8" - } - ], - "id": 1169, - "name": "VariableDeclaration", - "src": "982:18:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "stateCommitHash", - "scope": 1172, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1170, - "name": "ElementaryTypeName", - "src": "1012:7:8" - } - ], - "id": 1171, - "name": "VariableDeclaration", - "src": "1012:23:8" - } - ], - "id": 1172, - "name": "StructDefinition", - "src": "822:217:8" - }, - { - "attributes": { - "constant": false, - "functionSelector": "09600fa6", - "mutability": "mutable", - "name": "assetRecords", - "scope": 1610, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord)", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1173, - "name": "ElementaryTypeName", - "src": "1050:7:8" - }, - { - "attributes": { - "name": "AssetRecord", - "referencedDeclaration": 1172, - "type": "struct UAIRegistry.AssetRecord" - }, - "id": 1174, - "name": "UserDefinedTypeName", - "src": "1061:11:8" - } - ], - "id": 1175, - "name": "Mapping", - "src": "1042:31:8" - } - ], - "id": 1176, - "name": "VariableDeclaration", - "src": "1042:51:8" - }, - { - "attributes": { - "constant": false, - "functionSelector": "09added7", - "mutability": "mutable", - "name": "UAIstatus", - "scope": 1610, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => bool)", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => bool)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1177, - "name": "ElementaryTypeName", - "src": "1104:7:8" - }, - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1178, - "name": "ElementaryTypeName", - "src": "1115:4:8" - } - ], - "id": 1179, - "name": "Mapping", - "src": "1096:24:8" - } - ], - "id": 1180, - "name": "VariableDeclaration", - "src": "1096:41:8" - }, - { - "attributes": { - "constant": false, - "functionSelector": "34e5197b", - "mutability": "mutable", - "name": "assetStake", - "scope": 1610, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => uint256)", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => uint256)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1181, - "name": "ElementaryTypeName", - "src": "1149:7:8" - }, - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1182, - "name": "ElementaryTypeName", - "src": "1160:7:8" - } - ], - "id": 1183, - "name": "Mapping", - "src": "1141:27:8" - } - ], - "id": 1184, - "name": "VariableDeclaration", - "src": "1141:45:8" - }, - { - "attributes": { - "anonymous": false, - "name": "UAIRegistryInit" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "assertionRegistryAddress", - "scope": 1188, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1185, - "name": "ElementaryTypeName", - "src": "1226:7:8" - } - ], - "id": 1186, - "name": "VariableDeclaration", - "src": "1226:40:8" - } - ], - "id": 1187, - "name": "ParameterList", - "src": "1225:42:8" - } - ], - "id": 1188, - "name": "EventDefinition", - "src": "1204:64:8" - }, - { - "attributes": { - "anonymous": false, - "name": "UAICreated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "UAI", - "scope": 1194, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1189, - "name": "ElementaryTypeName", - "src": "1287:7:8" - } - ], - "id": 1190, - "name": "VariableDeclaration", - "src": "1287:19:8" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "stateCommitHash", - "scope": 1194, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1191, - "name": "ElementaryTypeName", - "src": "1308:7:8" - } - ], - "id": 1192, - "name": "VariableDeclaration", - "src": "1308:31:8" - } - ], - "id": 1193, - "name": "ParameterList", - "src": "1286:54:8" - } - ], - "id": 1194, - "name": "EventDefinition", - "src": "1270:71:8" - }, - { - "attributes": { - "anonymous": false, - "name": "UAIUpdatedState" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "UAI", - "scope": 1200, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1195, - "name": "ElementaryTypeName", - "src": "1365:7:8" - } - ], - "id": 1196, - "name": "VariableDeclaration", - "src": "1365:19:8" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "stateCommitHash", - "scope": 1200, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1197, - "name": "ElementaryTypeName", - "src": "1386:7:8" - } - ], - "id": 1198, - "name": "VariableDeclaration", - "src": "1386:31:8" - } - ], - "id": 1199, - "name": "ParameterList", - "src": "1364:55:8" - } - ], - "id": 1200, - "name": "EventDefinition", - "src": "1343:77:8" - }, - { - "attributes": { - "anonymous": false, - "name": "TokensDepositedToAsset" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "UAI", - "scope": 1208, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1201, - "name": "ElementaryTypeName", - "src": "1451:7:8" - } - ], - "id": 1202, - "name": "VariableDeclaration", - "src": "1451:19:8" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "amount", - "scope": 1208, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1203, - "name": "ElementaryTypeName", - "src": "1472:7:8" - } - ], - "id": 1204, - "name": "VariableDeclaration", - "src": "1472:22:8" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "depositor", - "scope": 1208, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1205, - "name": "ElementaryTypeName", - "src": "1496:7:8" - } - ], - "id": 1206, - "name": "VariableDeclaration", - "src": "1496:25:8" - } - ], - "id": 1207, - "name": "ParameterList", - "src": "1450:72:8" - } - ], - "id": 1208, - "name": "EventDefinition", - "src": "1422:101:8" - }, - { - "attributes": { - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [ - null - ], - "name": "", - "scope": 1610, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "scope": 1254, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1209, - "name": "ElementaryTypeName", - "src": "1538:7:8" - } - ], - "id": 1210, - "name": "VariableDeclaration", - "src": "1538:20:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionRegistryAddress", - "scope": 1254, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1211, - "name": "ElementaryTypeName", - "src": "1560:7:8" - } - ], - "id": 1212, - "name": "VariableDeclaration", - "src": "1560:32:8" - } - ], - "id": 1213, - "name": "ParameterList", - "src": "1537:56:8" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 1214, - "name": "ParameterList", - "src": "1602:0:8" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool) pure", - "value": "require" - }, - "id": 1215, - "name": "Identifier", - "src": "1606:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1210, - "type": "address", - "value": "tokenAddress" - }, - "id": 1216, - "name": "Identifier", - "src": "1614:12:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 1217, - "name": "ElementaryTypeName", - "src": "1628:7:8" - } - ], - "id": 1218, - "name": "ElementaryTypeNameExpression", - "src": "1628:7:8" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1219, - "name": "Literal", - "src": "1636:1:8" - } - ], - "id": 1220, - "name": "FunctionCall", - "src": "1628:10:8" - } - ], - "id": 1221, - "name": "BinaryOperation", - "src": "1614:24:8" - } - ], - "id": 1222, - "name": "FunctionCall", - "src": "1606:33:8" - } - ], - "id": 1223, - "name": "ExpressionStatement", - "src": "1606:33:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool) pure", - "value": "require" - }, - "id": 1224, - "name": "Identifier", - "src": "1643:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1212, - "type": "address", - "value": "assertionRegistryAddress" - }, - "id": 1225, - "name": "Identifier", - "src": "1651:24:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 1226, - "name": "ElementaryTypeName", - "src": "1677:7:8" - } - ], - "id": 1227, - "name": "ElementaryTypeNameExpression", - "src": "1677:7:8" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1228, - "name": "Literal", - "src": "1685:1:8" - } - ], - "id": 1229, - "name": "FunctionCall", - "src": "1677:10:8" - } - ], - "id": 1230, - "name": "BinaryOperation", - "src": "1651:36:8" - } - ], - "id": 1231, - "name": "FunctionCall", - "src": "1643:45:8" - } - ], - "id": 1232, - "name": "ExpressionStatement", - "src": "1643:45:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "contract IERC20" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1157, - "type": "contract IERC20", - "value": "token" - }, - "id": 1233, - "name": "Identifier", - "src": "1693:5:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "contract IERC20", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 676, - "type": "type(contract IERC20)", - "value": "IERC20" - }, - "id": 1234, - "name": "Identifier", - "src": "1701:6:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1210, - "type": "address", - "value": "tokenAddress" - }, - "id": 1235, - "name": "Identifier", - "src": "1708:12:8" - } - ], - "id": 1236, - "name": "FunctionCall", - "src": "1701:20:8" - } - ], - "id": 1237, - "name": "Assignment", - "src": "1693:28:8" - } - ], - "id": 1238, - "name": "ExpressionStatement", - "src": "1693:28:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1161, - "type": "address", - "value": "AssertionRegistryAddress" - }, - "id": 1239, - "name": "Identifier", - "src": "1725:24:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1212, - "type": "address", - "value": "assertionRegistryAddress" - }, - "id": 1240, - "name": "Identifier", - "src": "1752:24:8" - } - ], - "id": 1241, - "name": "Assignment", - "src": "1725:51:8" - } - ], - "id": 1242, - "name": "ExpressionStatement", - "src": "1725:51:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "contract DKGcontract" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1159, - "type": "contract DKGcontract", - "value": "AssertionRegistry" - }, - "id": 1243, - "name": "Identifier", - "src": "1780:17:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "contract DKGcontract", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1138, - "type": "type(contract DKGcontract)", - "value": "DKGcontract" - }, - "id": 1244, - "name": "Identifier", - "src": "1800:11:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1212, - "type": "address", - "value": "assertionRegistryAddress" - }, - "id": 1245, - "name": "Identifier", - "src": "1812:24:8" - } - ], - "id": 1246, - "name": "FunctionCall", - "src": "1800:37:8" - } - ], - "id": 1247, - "name": "Assignment", - "src": "1780:57:8" - } - ], - "id": 1248, - "name": "ExpressionStatement", - "src": "1780:57:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1188, - "type": "function (address)", - "value": "UAIRegistryInit" - }, - "id": 1249, - "name": "Identifier", - "src": "1846:15:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1212, - "type": "address", - "value": "assertionRegistryAddress" - }, - "id": 1250, - "name": "Identifier", - "src": "1862:24:8" - } - ], - "id": 1251, - "name": "FunctionCall", - "src": "1846:41:8" - } - ], - "id": 1252, - "name": "EmitStatement", - "src": "1841:46:8" - } - ], - "id": 1253, - "name": "Block", - "src": "1602:289:8" - } - ], - "id": 1254, - "name": "FunctionDefinition", - "src": "1526:365:8" - }, - { - "attributes": { - "functionSelector": "78e98392", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "registerAsset", - "scope": 1610, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "UAI", - "scope": 1372, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1255, - "name": "ElementaryTypeName", - "src": "1917:7:8" - } - ], - "id": 1256, - "name": "VariableDeclaration", - "src": "1917:11:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_type", - "scope": 1372, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1257, - "name": "ElementaryTypeName", - "src": "1930:5:8" - } - ], - "id": 1258, - "name": "VariableDeclaration", - "src": "1930:11:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "alsoKnownAs", - "scope": 1372, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1259, - "name": "ElementaryTypeName", - "src": "1943:7:8" - } - ], - "id": 1260, - "name": "VariableDeclaration", - "src": "1943:19:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "stateCommitHash", - "scope": 1372, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1261, - "name": "ElementaryTypeName", - "src": "1964:7:8" - } - ], - "id": 1262, - "name": "VariableDeclaration", - "src": "1964:23:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "rootHash", - "scope": 1372, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1263, - "name": "ElementaryTypeName", - "src": "1989:7:8" - } - ], - "id": 1264, - "name": "VariableDeclaration", - "src": "1989:16:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAmount", - "scope": 1372, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1265, - "name": "ElementaryTypeName", - "src": "2007:7:8" - } - ], - "id": 1266, - "name": "VariableDeclaration", - "src": "2007:19:8" - } - ], - "id": 1267, - "name": "ParameterList", - "src": "1916:111:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "scope": 1372, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1268, - "name": "ElementaryTypeName", - "src": "2044:7:8" - } - ], - "id": 1269, - "name": "VariableDeclaration", - "src": "2044:7:8" - } - ], - "id": 1270, - "name": "ParameterList", - "src": "2043:9:8" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8113bcaef69ad64d629f9f9842e44c0195bbec12498295833c352197bdf09d1b", - "typeString": "literal_string \"UAI cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1271, - "name": "Identifier", - "src": "2057:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1272, - "name": "Identifier", - "src": "2065:3:8" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1273, - "name": "Literal", - "src": "2070:1:8" - } - ], - "id": 1274, - "name": "BinaryOperation", - "src": "2065:6:8" - }, - { - "attributes": { - "hexvalue": "5541492063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"UAI cannot be zero\"", - "value": "UAI cannot be zero" - }, - "id": 1275, - "name": "Literal", - "src": "2073:20:8" - } - ], - "id": 1276, - "name": "FunctionCall", - "src": "2057:37:8" - } - ], - "id": 1277, - "name": "ExpressionStatement", - "src": "2057:37:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cf25b7c40ac58b98472d8ae4b6b8703daef3920dd8a8c2b2556b411059eb30d4", - "typeString": "literal_string \"_type allowed values: 0,1,2 (WIP)\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1278, - "name": "Identifier", - "src": "2098:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1258, - "type": "uint8", - "value": "_type" - }, - "id": 1279, - "name": "Identifier", - "src": "2106:5:8" - }, - { - "attributes": { - "hexvalue": "33", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 3", - "value": "3" - }, - "id": 1280, - "name": "Literal", - "src": "2114:1:8" - } - ], - "id": 1281, - "name": "BinaryOperation", - "src": "2106:9:8" - }, - { - "attributes": { - "hexvalue": "5f7479706520616c6c6f7765642076616c7565733a20302c312c32202857495029", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"_type allowed values: 0,1,2 (WIP)\"", - "value": "_type allowed values: 0,1,2 (WIP)" - }, - "id": 1282, - "name": "Literal", - "src": "2117:35:8" - } - ], - "id": 1283, - "name": "FunctionCall", - "src": "2098:55:8" - } - ], - "id": 1284, - "name": "ExpressionStatement", - "src": "2098:55:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_889a93080df6c407ecf58a36aecc1ba986f5889f8941567948da9184911b568f", - "typeString": "literal_string \"alsoKnownAs cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1285, - "name": "Identifier", - "src": "2157:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1260, - "type": "bytes32", - "value": "alsoKnownAs" - }, - "id": 1286, - "name": "Identifier", - "src": "2165:11:8" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1287, - "name": "Literal", - "src": "2178:1:8" - } - ], - "id": 1288, - "name": "BinaryOperation", - "src": "2165:14:8" - }, - { - "attributes": { - "hexvalue": "616c736f4b6e6f776e41732063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"alsoKnownAs cannot be zero\"", - "value": "alsoKnownAs cannot be zero" - }, - "id": 1289, - "name": "Literal", - "src": "2181:28:8" - } - ], - "id": 1290, - "name": "FunctionCall", - "src": "2157:53:8" - } - ], - "id": 1291, - "name": "ExpressionStatement", - "src": "2157:53:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_f0caaefff46a6fa6373daf0acae33c6a0d7f130841550573dc0a5b0fb9ec40cc", - "typeString": "literal_string \"stateCommitHash cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1292, - "name": "Identifier", - "src": "2214:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1262, - "type": "bytes32", - "value": "stateCommitHash" - }, - "id": 1293, - "name": "Identifier", - "src": "2222:15:8" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1294, - "name": "Literal", - "src": "2239:1:8" - } - ], - "id": 1295, - "name": "BinaryOperation", - "src": "2222:18:8" - }, - { - "attributes": { - "hexvalue": "7374617465436f6d6d6974486173682063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"stateCommitHash cannot be zero\"", - "value": "stateCommitHash cannot be zero" - }, - "id": 1296, - "name": "Literal", - "src": "2242:32:8" - } - ], - "id": 1297, - "name": "FunctionCall", - "src": "2214:61:8" - } - ], - "id": 1298, - "name": "ExpressionStatement", - "src": "2214:61:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool) pure", - "value": "require" - }, - "id": 1299, - "name": "Identifier", - "src": "2279:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1180, - "type": "mapping(bytes32 => bool)", - "value": "UAIstatus" - }, - "id": 1300, - "name": "Identifier", - "src": "2287:9:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1301, - "name": "Identifier", - "src": "2297:3:8" - } - ], - "id": 1302, - "name": "IndexAccess", - "src": "2287:14:8" - }, - { - "attributes": { - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 1303, - "name": "Literal", - "src": "2305:5:8" - } - ], - "id": 1304, - "name": "BinaryOperation", - "src": "2287:23:8" - } - ], - "id": 1305, - "name": "FunctionCall", - "src": "2279:33:8" - } - ], - "id": 1306, - "name": "ExpressionStatement", - "src": "2279:33:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "createAssertionRecord", - "referencedDeclaration": 1015, - "type": "function (bytes32,bytes32,address,uint256,uint256) external" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1159, - "type": "contract DKGcontract", - "value": "AssertionRegistry" - }, - "id": 1307, - "name": "Identifier", - "src": "2472:17:8" - } - ], - "id": 1309, - "name": "MemberAccess", - "src": "2472:39:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1262, - "type": "bytes32", - "value": "stateCommitHash" - }, - "id": 1310, - "name": "Identifier", - "src": "2512:15:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1264, - "type": "bytes32", - "value": "rootHash" - }, - "id": 1311, - "name": "Identifier", - "src": "2529:8:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 1312, - "name": "ElementaryTypeName", - "src": "2539:7:8" - } - ], - "id": 1313, - "name": "ElementaryTypeNameExpression", - "src": "2539:7:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1314, - "name": "Identifier", - "src": "2547:3:8" - } - ], - "id": 1315, - "name": "MemberAccess", - "src": "2547:10:8" - } - ], - "id": 1316, - "name": "FunctionCall", - "src": "2539:19:8" - }, - { - "attributes": { - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 1317, - "name": "Literal", - "src": "2560:1:8" - }, - { - "attributes": { - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 1318, - "name": "Literal", - "src": "2563:1:8" - } - ], - "id": 1319, - "name": "FunctionCall", - "src": "2472:93:8" - } - ], - "id": 1320, - "name": "ExpressionStatement", - "src": "2472:93:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "stateCommitHash", - "referencedDeclaration": 1171, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1321, - "name": "Identifier", - "src": "2613:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1322, - "name": "Identifier", - "src": "2626:3:8" - } - ], - "id": 1323, - "name": "IndexAccess", - "src": "2613:17:8" - } - ], - "id": 1324, - "name": "MemberAccess", - "src": "2613:33:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1262, - "type": "bytes32", - "value": "stateCommitHash" - }, - "id": 1325, - "name": "Identifier", - "src": "2649:15:8" - } - ], - "id": 1326, - "name": "Assignment", - "src": "2613:51:8" - } - ], - "id": 1327, - "name": "ExpressionStatement", - "src": "2613:51:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint8" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "_type", - "referencedDeclaration": 1167, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1328, - "name": "Identifier", - "src": "2668:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1329, - "name": "Identifier", - "src": "2681:3:8" - } - ], - "id": 1330, - "name": "IndexAccess", - "src": "2668:17:8" - } - ], - "id": 1331, - "name": "MemberAccess", - "src": "2668:23:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1258, - "type": "uint8", - "value": "_type" - }, - "id": 1332, - "name": "Identifier", - "src": "2694:5:8" - } - ], - "id": 1333, - "name": "Assignment", - "src": "2668:31:8" - } - ], - "id": 1334, - "name": "ExpressionStatement", - "src": "2668:31:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "alsoKnownAs", - "referencedDeclaration": 1165, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1335, - "name": "Identifier", - "src": "2703:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1336, - "name": "Identifier", - "src": "2716:3:8" - } - ], - "id": 1337, - "name": "IndexAccess", - "src": "2703:17:8" - } - ], - "id": 1338, - "name": "MemberAccess", - "src": "2703:29:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1260, - "type": "bytes32", - "value": "alsoKnownAs" - }, - "id": 1339, - "name": "Identifier", - "src": "2735:11:8" - } - ], - "id": 1340, - "name": "Assignment", - "src": "2703:43:8" - } - ], - "id": 1341, - "name": "ExpressionStatement", - "src": "2703:43:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "controller", - "referencedDeclaration": 1169, - "type": "address" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1342, - "name": "Identifier", - "src": "2750:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1343, - "name": "Identifier", - "src": "2763:3:8" - } - ], - "id": 1344, - "name": "IndexAccess", - "src": "2750:17:8" - } - ], - "id": 1345, - "name": "MemberAccess", - "src": "2750:28:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1346, - "name": "Identifier", - "src": "2781:3:8" - } - ], - "id": 1347, - "name": "MemberAccess", - "src": "2781:10:8" - } - ], - "id": 1348, - "name": "Assignment", - "src": "2750:41:8" - } - ], - "id": 1349, - "name": "ExpressionStatement", - "src": "2750:41:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "creationTimestamp", - "referencedDeclaration": 1163, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1350, - "name": "Identifier", - "src": "2847:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1351, - "name": "Identifier", - "src": "2860:3:8" - } - ], - "id": 1352, - "name": "IndexAccess", - "src": "2847:17:8" - } - ], - "id": 1353, - "name": "MemberAccess", - "src": "2847:35:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967292, - "type": "block", - "value": "block" - }, - "id": 1354, - "name": "Identifier", - "src": "2885:5:8" - } - ], - "id": 1355, - "name": "MemberAccess", - "src": "2885:15:8" - } - ], - "id": 1356, - "name": "Assignment", - "src": "2847:53:8" - } - ], - "id": 1357, - "name": "ExpressionStatement", - "src": "2847:53:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1180, - "type": "mapping(bytes32 => bool)", - "value": "UAIstatus" - }, - "id": 1358, - "name": "Identifier", - "src": "2904:9:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1359, - "name": "Identifier", - "src": "2914:3:8" - } - ], - "id": 1360, - "name": "IndexAccess", - "src": "2904:14:8" - }, - { - "attributes": { - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 1361, - "name": "Literal", - "src": "2921:4:8" - } - ], - "id": 1362, - "name": "Assignment", - "src": "2904:21:8" - } - ], - "id": 1363, - "name": "ExpressionStatement", - "src": "2904:21:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1194, - "type": "function (bytes32,bytes32)", - "value": "UAICreated" - }, - "id": 1364, - "name": "Identifier", - "src": "2935:10:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1365, - "name": "Identifier", - "src": "2946:3:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1262, - "type": "bytes32", - "value": "stateCommitHash" - }, - "id": 1366, - "name": "Identifier", - "src": "2951:15:8" - } - ], - "id": 1367, - "name": "FunctionCall", - "src": "2935:32:8" - } - ], - "id": 1368, - "name": "EmitStatement", - "src": "2930:37:8" - }, - { - "attributes": { - "functionReturnParameters": 1270 - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1256, - "type": "bytes32", - "value": "UAI" - }, - "id": 1369, - "name": "Identifier", - "src": "2979:3:8" - } - ], - "id": 1370, - "name": "Return", - "src": "2972:10:8" - } - ], - "id": 1371, - "name": "Block", - "src": "2052:934:8" - } - ], - "id": 1372, - "name": "FunctionDefinition", - "src": "1894:1092:8" - }, - { - "attributes": { - "functionSelector": "a9cd6a2d", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "updateAssetState", - "scope": 1610, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "UAI", - "scope": 1440, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1373, - "name": "ElementaryTypeName", - "src": "3017:7:8" - } - ], - "id": 1374, - "name": "VariableDeclaration", - "src": "3017:11:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "newStateCommitHash", - "scope": 1440, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1375, - "name": "ElementaryTypeName", - "src": "3030:7:8" - } - ], - "id": 1376, - "name": "VariableDeclaration", - "src": "3030:26:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "rootHash", - "scope": 1440, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1377, - "name": "ElementaryTypeName", - "src": "3058:7:8" - } - ], - "id": 1378, - "name": "VariableDeclaration", - "src": "3058:16:8" - } - ], - "id": 1379, - "name": "ParameterList", - "src": "3016:59:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "scope": 1440, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1380, - "name": "ElementaryTypeName", - "src": "3092:7:8" - } - ], - "id": 1381, - "name": "VariableDeclaration", - "src": "3092:7:8" - } - ], - "id": 1382, - "name": "ParameterList", - "src": "3091:9:8" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8113bcaef69ad64d629f9f9842e44c0195bbec12498295833c352197bdf09d1b", - "typeString": "literal_string \"UAI cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1383, - "name": "Identifier", - "src": "3106:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1374, - "type": "bytes32", - "value": "UAI" - }, - "id": 1384, - "name": "Identifier", - "src": "3114:3:8" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1385, - "name": "Literal", - "src": "3119:1:8" - } - ], - "id": 1386, - "name": "BinaryOperation", - "src": "3114:6:8" - }, - { - "attributes": { - "hexvalue": "5541492063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"UAI cannot be zero\"", - "value": "UAI cannot be zero" - }, - "id": 1387, - "name": "Literal", - "src": "3122:20:8" - } - ], - "id": 1388, - "name": "FunctionCall", - "src": "3106:37:8" - } - ], - "id": 1389, - "name": "ExpressionStatement", - "src": "3106:37:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_1288ba10f0c0a9fa84e2f581ad61c72d898b048e206b52821e5663686f23ff37", - "typeString": "literal_string \"Asset must exist\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1390, - "name": "Identifier", - "src": "3147:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1180, - "type": "mapping(bytes32 => bool)", - "value": "UAIstatus" - }, - "id": 1391, - "name": "Identifier", - "src": "3155:9:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1374, - "type": "bytes32", - "value": "UAI" - }, - "id": 1392, - "name": "Identifier", - "src": "3165:3:8" - } - ], - "id": 1393, - "name": "IndexAccess", - "src": "3155:14:8" - }, - { - "attributes": { - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 1394, - "name": "Literal", - "src": "3173:4:8" - } - ], - "id": 1395, - "name": "BinaryOperation", - "src": "3155:22:8" - }, - { - "attributes": { - "hexvalue": "4173736574206d757374206578697374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"Asset must exist\"", - "value": "Asset must exist" - }, - "id": 1396, - "name": "Literal", - "src": "3179:18:8" - } - ], - "id": 1397, - "name": "FunctionCall", - "src": "3147:52:8" - } - ], - "id": 1398, - "name": "ExpressionStatement", - "src": "3147:52:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fa287c795401a9447e9af39b3f60c2649bae99888868237daa5c7cc28744941b", - "typeString": "literal_string \"newStateCommitHash cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1399, - "name": "Identifier", - "src": "3203:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1376, - "type": "bytes32", - "value": "newStateCommitHash" - }, - "id": 1400, - "name": "Identifier", - "src": "3211:18:8" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1401, - "name": "Literal", - "src": "3231:1:8" - } - ], - "id": 1402, - "name": "BinaryOperation", - "src": "3211:21:8" - }, - { - "attributes": { - "hexvalue": "6e65775374617465436f6d6d6974486173682063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"newStateCommitHash cannot be zero\"", - "value": "newStateCommitHash cannot be zero" - }, - "id": 1403, - "name": "Literal", - "src": "3234:35:8" - } - ], - "id": 1404, - "name": "FunctionCall", - "src": "3203:67:8" - } - ], - "id": 1405, - "name": "ExpressionStatement", - "src": "3203:67:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool) pure", - "value": "require" - }, - "id": 1406, - "name": "Identifier", - "src": "3274:7:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1531, - "type": "function (bytes32,address) returns (bool)", - "value": "isOwner" - }, - "id": 1407, - "name": "Identifier", - "src": "3282:7:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1374, - "type": "bytes32", - "value": "UAI" - }, - "id": 1408, - "name": "Identifier", - "src": "3290:3:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1409, - "name": "Identifier", - "src": "3294:3:8" - } - ], - "id": 1410, - "name": "MemberAccess", - "src": "3294:10:8" - } - ], - "id": 1411, - "name": "FunctionCall", - "src": "3282:23:8" - } - ], - "id": 1412, - "name": "FunctionCall", - "src": "3274:32:8" - } - ], - "id": 1413, - "name": "ExpressionStatement", - "src": "3274:32:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "createAssertionRecord", - "referencedDeclaration": 1015, - "type": "function (bytes32,bytes32,address,uint256,uint256) external" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1159, - "type": "contract DKGcontract", - "value": "AssertionRegistry" - }, - "id": 1414, - "name": "Identifier", - "src": "3313:17:8" - } - ], - "id": 1416, - "name": "MemberAccess", - "src": "3313:39:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1376, - "type": "bytes32", - "value": "newStateCommitHash" - }, - "id": 1417, - "name": "Identifier", - "src": "3353:18:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1378, - "type": "bytes32", - "value": "rootHash" - }, - "id": 1418, - "name": "Identifier", - "src": "3373:8:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1419, - "name": "Identifier", - "src": "3383:3:8" - } - ], - "id": 1420, - "name": "MemberAccess", - "src": "3383:10:8" - }, - { - "attributes": { - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 1421, - "name": "Literal", - "src": "3395:1:8" - }, - { - "attributes": { - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 1422, - "name": "Literal", - "src": "3398:1:8" - } - ], - "id": 1423, - "name": "FunctionCall", - "src": "3313:87:8" - } - ], - "id": 1424, - "name": "ExpressionStatement", - "src": "3313:87:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "stateCommitHash", - "referencedDeclaration": 1171, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1425, - "name": "Identifier", - "src": "3414:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1374, - "type": "bytes32", - "value": "UAI" - }, - "id": 1426, - "name": "Identifier", - "src": "3427:3:8" - } - ], - "id": 1427, - "name": "IndexAccess", - "src": "3414:17:8" - } - ], - "id": 1428, - "name": "MemberAccess", - "src": "3414:33:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1376, - "type": "bytes32", - "value": "newStateCommitHash" - }, - "id": 1429, - "name": "Identifier", - "src": "3451:18:8" - } - ], - "id": 1430, - "name": "Assignment", - "src": "3414:55:8" - } - ], - "id": 1431, - "name": "ExpressionStatement", - "src": "3414:55:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1200, - "type": "function (bytes32,bytes32)", - "value": "UAIUpdatedState" - }, - "id": 1432, - "name": "Identifier", - "src": "3518:15:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1374, - "type": "bytes32", - "value": "UAI" - }, - "id": 1433, - "name": "Identifier", - "src": "3534:3:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1376, - "type": "bytes32", - "value": "newStateCommitHash" - }, - "id": 1434, - "name": "Identifier", - "src": "3539:18:8" - } - ], - "id": 1435, - "name": "FunctionCall", - "src": "3518:40:8" - } - ], - "id": 1436, - "name": "EmitStatement", - "src": "3513:45:8" - }, - { - "attributes": { - "functionReturnParameters": 1382 - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1374, - "type": "bytes32", - "value": "UAI" - }, - "id": 1437, - "name": "Identifier", - "src": "3570:3:8" - } - ], - "id": 1438, - "name": "Return", - "src": "3563:10:8" - } - ], - "id": 1439, - "name": "Block", - "src": "3101:476:8" - } - ], - "id": 1440, - "name": "FunctionDefinition", - "src": "2991:586:8" - }, - { - "attributes": { - "functionSelector": "52569b9d", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssetStateCommitHash", - "scope": 1610, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "UAI", - "scope": 1453, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1441, - "name": "ElementaryTypeName", - "src": "3626:7:8" - } - ], - "id": 1442, - "name": "VariableDeclaration", - "src": "3626:11:8" - } - ], - "id": 1443, - "name": "ParameterList", - "src": "3625:13:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "stateCommitHash", - "scope": 1453, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1444, - "name": "ElementaryTypeName", - "src": "3659:7:8" - } - ], - "id": 1445, - "name": "VariableDeclaration", - "src": "3659:23:8" - } - ], - "id": 1446, - "name": "ParameterList", - "src": "3658:25:8" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1446 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "stateCommitHash", - "referencedDeclaration": 1171, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1447, - "name": "Identifier", - "src": "3694:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1442, - "type": "bytes32", - "value": "UAI" - }, - "id": 1448, - "name": "Identifier", - "src": "3707:3:8" - } - ], - "id": 1449, - "name": "IndexAccess", - "src": "3694:17:8" - } - ], - "id": 1450, - "name": "MemberAccess", - "src": "3694:33:8" - } - ], - "id": 1451, - "name": "Return", - "src": "3687:40:8" - } - ], - "id": 1452, - "name": "Block", - "src": "3683:48:8" - } - ], - "id": 1453, - "name": "FunctionDefinition", - "src": "3593:138:8" - }, - { - "attributes": { - "functionSelector": "77636d1d", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssetController", - "scope": 1610, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "UAI", - "scope": 1466, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1454, - "name": "ElementaryTypeName", - "src": "3762:7:8" - } - ], - "id": 1455, - "name": "VariableDeclaration", - "src": "3762:11:8" - } - ], - "id": 1456, - "name": "ParameterList", - "src": "3761:13:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "controller", - "scope": 1466, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1457, - "name": "ElementaryTypeName", - "src": "3795:7:8" - } - ], - "id": 1458, - "name": "VariableDeclaration", - "src": "3795:18:8" - } - ], - "id": 1459, - "name": "ParameterList", - "src": "3794:20:8" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1459 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "controller", - "referencedDeclaration": 1169, - "type": "address" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1460, - "name": "Identifier", - "src": "3825:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1455, - "type": "bytes32", - "value": "UAI" - }, - "id": 1461, - "name": "Identifier", - "src": "3838:3:8" - } - ], - "id": 1462, - "name": "IndexAccess", - "src": "3825:17:8" - } - ], - "id": 1463, - "name": "MemberAccess", - "src": "3825:28:8" - } - ], - "id": 1464, - "name": "Return", - "src": "3818:35:8" - } - ], - "id": 1465, - "name": "Block", - "src": "3814:43:8" - } - ], - "id": 1466, - "name": "FunctionDefinition", - "src": "3734:123:8" - }, - { - "attributes": { - "functionSelector": "6f3a9229", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssetAKA", - "scope": 1610, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "UAI", - "scope": 1479, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1467, - "name": "ElementaryTypeName", - "src": "3881:7:8" - } - ], - "id": 1468, - "name": "VariableDeclaration", - "src": "3881:11:8" - } - ], - "id": 1469, - "name": "ParameterList", - "src": "3880:13:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "alsoKnownAs", - "scope": 1479, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1470, - "name": "ElementaryTypeName", - "src": "3914:7:8" - } - ], - "id": 1471, - "name": "VariableDeclaration", - "src": "3914:19:8" - } - ], - "id": 1472, - "name": "ParameterList", - "src": "3913:21:8" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1472 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "alsoKnownAs", - "referencedDeclaration": 1165, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1473, - "name": "Identifier", - "src": "3945:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1468, - "type": "bytes32", - "value": "UAI" - }, - "id": 1474, - "name": "Identifier", - "src": "3958:3:8" - } - ], - "id": 1475, - "name": "IndexAccess", - "src": "3945:17:8" - } - ], - "id": 1476, - "name": "MemberAccess", - "src": "3945:29:8" - } - ], - "id": 1477, - "name": "Return", - "src": "3938:36:8" - } - ], - "id": 1478, - "name": "Block", - "src": "3934:44:8" - } - ], - "id": 1479, - "name": "FunctionDefinition", - "src": "3860:118:8" - }, - { - "attributes": { - "functionSelector": "7f58afc8", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssetCreationTimestamp", - "scope": 1610, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "UAI", - "scope": 1492, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1480, - "name": "ElementaryTypeName", - "src": "4016:7:8" - } - ], - "id": 1481, - "name": "VariableDeclaration", - "src": "4016:11:8" - } - ], - "id": 1482, - "name": "ParameterList", - "src": "4015:13:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "creationTimestamp", - "scope": 1492, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1483, - "name": "ElementaryTypeName", - "src": "4049:7:8" - } - ], - "id": 1484, - "name": "VariableDeclaration", - "src": "4049:25:8" - } - ], - "id": 1485, - "name": "ParameterList", - "src": "4048:27:8" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1485 - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "creationTimestamp", - "referencedDeclaration": 1163, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1486, - "name": "Identifier", - "src": "4086:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1481, - "type": "bytes32", - "value": "UAI" - }, - "id": 1487, - "name": "Identifier", - "src": "4099:3:8" - } - ], - "id": 1488, - "name": "IndexAccess", - "src": "4086:17:8" - } - ], - "id": 1489, - "name": "MemberAccess", - "src": "4086:35:8" - } - ], - "id": 1490, - "name": "Return", - "src": "4079:42:8" - } - ], - "id": 1491, - "name": "Block", - "src": "4075:50:8" - } - ], - "id": 1492, - "name": "FunctionDefinition", - "src": "3981:144:8" - }, - { - "attributes": { - "functionSelector": "2f1704bc", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "getAssertionRegistry", - "scope": 1610, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 1493, - "name": "ParameterList", - "src": "4157:2:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "assertionRegistry", - "scope": 1500, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1494, - "name": "ElementaryTypeName", - "src": "4180:7:8" - } - ], - "id": 1495, - "name": "VariableDeclaration", - "src": "4180:25:8" - } - ], - "id": 1496, - "name": "ParameterList", - "src": "4179:27:8" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1496 - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1161, - "type": "address", - "value": "AssertionRegistryAddress" - }, - "id": 1497, - "name": "Identifier", - "src": "4217:24:8" - } - ], - "id": 1498, - "name": "Return", - "src": "4210:31:8" - } - ], - "id": 1499, - "name": "Block", - "src": "4206:39:8" - } - ], - "id": 1500, - "name": "FunctionDefinition", - "src": "4128:117:8" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "determineType", - "scope": 1610, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Should determine type of ``contractAddress``, if possible, returning enum AssetType" - }, - "id": 1501, - "name": "StructuredDocumentation", - "src": "4263:107:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "contractAddress", - "scope": 1513, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1502, - "name": "ElementaryTypeName", - "src": "4399:7:8" - } - ], - "id": 1503, - "name": "VariableDeclaration", - "src": "4399:23:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "id", - "scope": 1513, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1504, - "name": "ElementaryTypeName", - "src": "4424:7:8" - } - ], - "id": 1505, - "name": "VariableDeclaration", - "src": "4424:10:8" - } - ], - "id": 1506, - "name": "ParameterList", - "src": "4398:37:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "scope": 1513, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1507, - "name": "ElementaryTypeName", - "src": "4454:5:8" - } - ], - "id": 1508, - "name": "VariableDeclaration", - "src": "4454:5:8" - } - ], - "id": 1509, - "name": "ParameterList", - "src": "4453:7:8" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1509 - }, - "children": [ - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1510, - "name": "Literal", - "src": "4471:1:8" - } - ], - "id": 1511, - "name": "Return", - "src": "4464:8:8" - } - ], - "id": 1512, - "name": "Block", - "src": "4460:62:8" - } - ], - "id": 1513, - "name": "FunctionDefinition", - "src": "4376:146:8" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "isOwner", - "scope": 1610, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Returns bool checking if ``owner`` is controller of ``UAI``" - }, - "id": 1514, - "name": "StructuredDocumentation", - "src": "4525:83:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "UAI", - "scope": 1531, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1515, - "name": "ElementaryTypeName", - "src": "4631:7:8" - } - ], - "id": 1516, - "name": "VariableDeclaration", - "src": "4631:11:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "owner", - "scope": 1531, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1517, - "name": "ElementaryTypeName", - "src": "4644:7:8" - } - ], - "id": 1518, - "name": "VariableDeclaration", - "src": "4644:13:8" - } - ], - "id": 1519, - "name": "ParameterList", - "src": "4630:28:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "scope": 1531, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1520, - "name": "ElementaryTypeName", - "src": "4677:4:8" - } - ], - "id": 1521, - "name": "VariableDeclaration", - "src": "4677:4:8" - } - ], - "id": 1522, - "name": "ParameterList", - "src": "4676:6:8" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1522 - }, - "children": [ - { - "attributes": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1518, - "type": "address", - "value": "owner" - }, - "id": 1523, - "name": "Identifier", - "src": "4698:5:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "controller", - "referencedDeclaration": 1169, - "type": "address" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct UAIRegistry.AssetRecord storage ref" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1176, - "type": "mapping(bytes32 => struct UAIRegistry.AssetRecord storage ref)", - "value": "assetRecords" - }, - "id": 1524, - "name": "Identifier", - "src": "4707:12:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1516, - "type": "bytes32", - "value": "UAI" - }, - "id": 1525, - "name": "Identifier", - "src": "4720:3:8" - } - ], - "id": 1526, - "name": "IndexAccess", - "src": "4707:17:8" - } - ], - "id": 1527, - "name": "MemberAccess", - "src": "4707:28:8" - } - ], - "id": 1528, - "name": "BinaryOperation", - "src": "4698:37:8" - } - ], - "id": 1529, - "name": "Return", - "src": "4691:44:8" - } - ], - "id": 1530, - "name": "Block", - "src": "4683:60:8" - } - ], - "id": 1531, - "name": "FunctionDefinition", - "src": "4614:129:8" - }, - { - "attributes": { - "functionSelector": "d15b223e", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "depositTokens", - "scope": 1610, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Deposits tokens in ``amount`` to specific ``UAI``" - }, - "id": 1532, - "name": "StructuredDocumentation", - "src": "4746:73:8" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "scope": 1609, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1533, - "name": "ElementaryTypeName", - "src": "4848:7:8" - } - ], - "id": 1534, - "name": "VariableDeclaration", - "src": "4848:14:8" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "UAI", - "scope": 1609, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1535, - "name": "ElementaryTypeName", - "src": "4864:7:8" - } - ], - "id": 1536, - "name": "VariableDeclaration", - "src": "4864:11:8" - } - ], - "id": 1537, - "name": "ParameterList", - "src": "4847:29:8" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 1538, - "name": "ParameterList", - "src": "4884:0:8" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8beea76deddeff1012d90e1e8da369393f885b0575eb094a33da9912cc4bbb8b", - "typeString": "literal_string \"Amount cannot be zero\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1539, - "name": "Identifier", - "src": "4893:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1534, - "type": "uint256", - "value": "amount" - }, - "id": 1540, - "name": "Identifier", - "src": "4901:6:8" - }, - { - "attributes": { - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1541, - "name": "Literal", - "src": "4908:1:8" - } - ], - "id": 1542, - "name": "BinaryOperation", - "src": "4901:8:8" - }, - { - "attributes": { - "hexvalue": "416d6f756e742063616e6e6f74206265207a65726f", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"Amount cannot be zero\"", - "value": "Amount cannot be zero" - }, - "id": 1543, - "name": "Literal", - "src": "4911:23:8" - } - ], - "id": 1544, - "name": "FunctionCall", - "src": "4893:42:8" - } - ], - "id": 1545, - "name": "ExpressionStatement", - "src": "4893:42:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3bc5ac98536c45d410bf37692b674d7f6ad3249fabf29eadc142b2e562988389", - "typeString": "literal_string \"Sender allowance must be equal to or higher than chosen amount\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1546, - "name": "Identifier", - "src": "4943:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "allowance", - "referencedDeclaration": 635, - "type": "function (address,address) view external returns (uint256)" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1157, - "type": "contract IERC20", - "value": "token" - }, - "id": 1547, - "name": "Identifier", - "src": "4951:5:8" - } - ], - "id": 1548, - "name": "MemberAccess", - "src": "4951:15:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1549, - "name": "Identifier", - "src": "4967:3:8" - } - ], - "id": 1550, - "name": "MemberAccess", - "src": "4967:10:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_UAIRegistry_$1610", - "typeString": "contract UAIRegistry" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 1551, - "name": "ElementaryTypeName", - "src": "4979:7:8" - } - ], - "id": 1552, - "name": "ElementaryTypeNameExpression", - "src": "4979:7:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967268, - "type": "contract UAIRegistry", - "value": "this" - }, - "id": 1553, - "name": "Identifier", - "src": "4987:4:8" - } - ], - "id": 1554, - "name": "FunctionCall", - "src": "4979:13:8" - } - ], - "id": 1555, - "name": "FunctionCall", - "src": "4951:42:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1534, - "type": "uint256", - "value": "amount" - }, - "id": 1556, - "name": "Identifier", - "src": "4997:6:8" - } - ], - "id": 1557, - "name": "BinaryOperation", - "src": "4951:52:8" - }, - { - "attributes": { - "hexvalue": "53656e64657220616c6c6f77616e6365206d75737420626520657175616c20746f206f7220686967686572207468616e2063686f73656e20616d6f756e74", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"Sender allowance must be equal to or higher than chosen amount\"", - "value": "Sender allowance must be equal to or higher than chosen amount" - }, - "id": 1558, - "name": "Literal", - "src": "5005:64:8" - } - ], - "id": 1559, - "name": "FunctionCall", - "src": "4943:127:8" - } - ], - "id": 1560, - "name": "ExpressionStatement", - "src": "4943:127:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_262e509abce0ea4c77b39344642b82be870ee6d03e35d57d1dee69295a1e383b", - "typeString": "literal_string \"Sender balance must be equal to or higher than chosen amount!\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1561, - "name": "Identifier", - "src": "5078:7:8" - }, - { - "attributes": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "balanceOf", - "referencedDeclaration": 615, - "type": "function (address) view external returns (uint256)" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1157, - "type": "contract IERC20", - "value": "token" - }, - "id": 1562, - "name": "Identifier", - "src": "5086:5:8" - } - ], - "id": 1563, - "name": "MemberAccess", - "src": "5086:15:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1564, - "name": "Identifier", - "src": "5102:3:8" - } - ], - "id": 1565, - "name": "MemberAccess", - "src": "5102:10:8" - } - ], - "id": 1566, - "name": "FunctionCall", - "src": "5086:27:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1534, - "type": "uint256", - "value": "amount" - }, - "id": 1567, - "name": "Identifier", - "src": "5117:6:8" - } - ], - "id": 1568, - "name": "BinaryOperation", - "src": "5086:37:8" - }, - { - "attributes": { - "hexvalue": "53656e6465722062616c616e6365206d75737420626520657175616c20746f206f7220686967686572207468616e2063686f73656e20616d6f756e7421", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"Sender balance must be equal to or higher than chosen amount!\"", - "value": "Sender balance must be equal to or higher than chosen amount!" - }, - "id": 1569, - "name": "Literal", - "src": "5125:63:8" - } - ], - "id": 1570, - "name": "FunctionCall", - "src": "5078:111:8" - } - ], - "id": 1571, - "name": "ExpressionStatement", - "src": "5078:111:8" - }, - { - "attributes": { - "assignments": [ - 1573 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "transaction_result", - "scope": 1608, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1572, - "name": "ElementaryTypeName", - "src": "5198:4:8" - } - ], - "id": 1573, - "name": "VariableDeclaration", - "src": "5198:23:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "transferFrom", - "referencedDeclaration": 657, - "type": "function (address,address,uint256) external returns (bool)" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1157, - "type": "contract IERC20", - "value": "token" - }, - "id": 1574, - "name": "Identifier", - "src": "5224:5:8" - } - ], - "id": 1575, - "name": "MemberAccess", - "src": "5224:18:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1576, - "name": "Identifier", - "src": "5243:3:8" - } - ], - "id": 1577, - "name": "MemberAccess", - "src": "5243:10:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_UAIRegistry_$1610", - "typeString": "contract UAIRegistry" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 1578, - "name": "ElementaryTypeName", - "src": "5255:7:8" - } - ], - "id": 1579, - "name": "ElementaryTypeNameExpression", - "src": "5255:7:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967268, - "type": "contract UAIRegistry", - "value": "this" - }, - "id": 1580, - "name": "Identifier", - "src": "5263:4:8" - } - ], - "id": 1581, - "name": "FunctionCall", - "src": "5255:13:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1534, - "type": "uint256", - "value": "amount" - }, - "id": 1582, - "name": "Identifier", - "src": "5270:6:8" - } - ], - "id": 1583, - "name": "FunctionCall", - "src": "5224:53:8" - } - ], - "id": 1584, - "name": "VariableDeclarationStatement", - "src": "5198:79:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c60aa67373380e582a977ce48d7156e19a6358c471790919f2371ebd75aaf7c7", - "typeString": "literal_string \"Token transaction execution failed!\"" - } - ], - "overloadedDeclarations": [ - 4294967278, - 4294967278 - ], - "referencedDeclaration": 4294967278, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1585, - "name": "Identifier", - "src": "5285:7:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1573, - "type": "bool", - "value": "transaction_result" - }, - "id": 1586, - "name": "Identifier", - "src": "5293:18:8" - }, - { - "attributes": { - "hexvalue": "546f6b656e207472616e73616374696f6e20657865637574696f6e206661696c656421", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "token": "string", - "type": "literal_string \"Token transaction execution failed!\"", - "value": "Token transaction execution failed!" - }, - "id": 1587, - "name": "Literal", - "src": "5313:37:8" - } - ], - "id": 1588, - "name": "FunctionCall", - "src": "5285:66:8" - } - ], - "id": 1589, - "name": "ExpressionStatement", - "src": "5285:66:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1184, - "type": "mapping(bytes32 => uint256)", - "value": "assetStake" - }, - "id": 1590, - "name": "Identifier", - "src": "5496:10:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1536, - "type": "bytes32", - "value": "UAI" - }, - "id": 1591, - "name": "Identifier", - "src": "5507:3:8" - } - ], - "id": 1592, - "name": "IndexAccess", - "src": "5496:15:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 303, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1184, - "type": "mapping(bytes32 => uint256)", - "value": "assetStake" - }, - "id": 1593, - "name": "Identifier", - "src": "5514:10:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1536, - "type": "bytes32", - "value": "UAI" - }, - "id": 1594, - "name": "Identifier", - "src": "5525:3:8" - } - ], - "id": 1595, - "name": "IndexAccess", - "src": "5514:15:8" - } - ], - "id": 1596, - "name": "MemberAccess", - "src": "5514:19:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1534, - "type": "uint256", - "value": "amount" - }, - "id": 1597, - "name": "Identifier", - "src": "5534:6:8" - } - ], - "id": 1598, - "name": "FunctionCall", - "src": "5514:27:8" - } - ], - "id": 1599, - "name": "Assignment", - "src": "5496:45:8" - } - ], - "id": 1600, - "name": "ExpressionStatement", - "src": "5496:45:8" - }, - { - "children": [ - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1208, - "type": "function (bytes32,uint256,address)", - "value": "TokensDepositedToAsset" - }, - "id": 1601, - "name": "Identifier", - "src": "5550:22:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1536, - "type": "bytes32", - "value": "UAI" - }, - "id": 1602, - "name": "Identifier", - "src": "5573:3:8" - }, - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1534, - "type": "uint256", - "value": "amount" - }, - "id": 1603, - "name": "Identifier", - "src": "5578:6:8" - }, - { - "attributes": { - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "type": "address payable" - }, - "children": [ - { - "attributes": { - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 4294967281, - "type": "msg", - "value": "msg" - }, - "id": 1604, - "name": "Identifier", - "src": "5585:3:8" - } - ], - "id": 1605, - "name": "MemberAccess", - "src": "5585:10:8" - } - ], - "id": 1606, - "name": "FunctionCall", - "src": "5550:46:8" - } - ], - "id": 1607, - "name": "EmitStatement", - "src": "5545:51:8" - } - ], - "id": 1608, - "name": "Block", - "src": "4884:717:8" - } - ], - "id": 1609, - "name": "FunctionDefinition", - "src": "4825:776:8" - } - ], - "id": 1610, - "name": "ContractDefinition", - "src": "623:4983:8" - } - ], - "id": 1611, - "name": "SourceUnit", - "src": "0:5606:8" - }, - "compiler": { - "name": "solc", - "version": "0.7.6+commit.7338295f.Emscripten.clang" - }, - "networks": { - "5777": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0x2460c4e801cd784222555963fc8a1f1497f9ce3b23446fa14da62d3170989333": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "depositor", - "type": "address" - } - ], - "name": "TokensDepositedToAsset", - "type": "event" - }, - "0x2f87578a4aeec4a0b61bbcea1767fec00fa79a35cf600b258509e25acdaba8e7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - } - ], - "name": "UAICreated", - "type": "event" - }, - "0x52db5c2cb9235be3e8a3fe47f4ec4bc55b5e28aa119b750b0e766b1cb00c9aa7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "assertionRegistryAddress", - "type": "address" - } - ], - "name": "UAIRegistryInit", - "type": "event" - }, - "0xa83f066abfa07a77196c29bd4b7aab88f194feaa03d9769ec2ceccf6701d06de": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - } - ], - "name": "UAIUpdatedState", - "type": "event" - } - }, - "links": {}, - "address": "0x04d5396358647Cd863293c156037D0AC02328c32", - "transactionHash": "0x8cbcb3d1bfbc3e4962586b5f0527de00742bd6ca92e8e91ceef4f3c87ecc10da" - }, - "80001": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0x2460c4e801cd784222555963fc8a1f1497f9ce3b23446fa14da62d3170989333": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "depositor", - "type": "address" - } - ], - "name": "TokensDepositedToAsset", - "type": "event" - }, - "0x2f87578a4aeec4a0b61bbcea1767fec00fa79a35cf600b258509e25acdaba8e7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - } - ], - "name": "UAICreated", - "type": "event" - }, - "0x52db5c2cb9235be3e8a3fe47f4ec4bc55b5e28aa119b750b0e766b1cb00c9aa7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "assertionRegistryAddress", - "type": "address" - } - ], - "name": "UAIRegistryInit", - "type": "event" - }, - "0xa83f066abfa07a77196c29bd4b7aab88f194feaa03d9769ec2ceccf6701d06de": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "UAI", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "stateCommitHash", - "type": "bytes32" - } - ], - "name": "UAIUpdatedState", - "type": "event" - } - }, - "links": {}, - "address": "0xFD6ECaed420aB70fb97eB2423780517dc425ef81", - "transactionHash": "0xf382f1e521d6a6c794bea0e3522669706b1afcf004e4c40876fe2e40214cab71" - } - }, - "schemaVersion": "3.4.3", - "updatedAt": "2022-02-11T10:13:46.703Z", - "networkType": "ethereum", - "devdoc": { - "kind": "dev", - "methods": { - "depositTokens(uint256,bytes32)": { - "details": "Deposits tokens in ``amount`` to specific ``UAI``" - }, - "owner()": { - "details": "Returns the address of the current owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." - }, - "transferOwnership(address)": { - "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/config/config.json b/config/config.json index 582f5908a..b374f0dc4 100644 --- a/config/config.json +++ b/config/config.json @@ -17,19 +17,40 @@ "implementation": { "express-http-client": { "package": "./http-client/implementation/express-http-client", - "config": {} + "config": { + "useSsl": false, + "port": 8900, + "sslKeyPath": "/root/certs/privkey.pem", + "sslCertificatePath": "/root/certs/fullchain.pem", + "rateLimiter": { + "timeWindowSeconds": 60, + "maxRequests": 10 + } + } + } + } + }, + "network": { + "enabled": true, + "implementation": { + "libp2p-service": { + "package": "./network/implementation/libp2p-service", + "config": { + "port": 9000, + "bootstrap": [] + } } } }, "repository": { - "enabled": false, + "enabled": true, "implementation": { "sequelize-repository": { "package": "./repository/implementation/sequelize/sequelize-repository", "config": { "database": "operationaldb", "user": "root", - "password": "password", + "password": "", "port": "3306", "host": "localhost", "dialect": "mysql", @@ -37,44 +58,104 @@ } } } + }, + "tripleStore": { + "enabled": true, + "defaultImplementation": "ot-graphdb", + "implementation": { + "ot-blazegraph": { + "package": "./triple-store/implementation/ot-blazegraph/ot-blazegraph", + "config": { + "url": "http://localhost:9999/blazegraph", + "repository": "node0", + "username": "admin", + "password": "" + } + }, + "ot-fuseki": { + "package": "./triple-store/implementation/ot-fuseki/ot-fuseki", + "config": { + "url": "http://localhost:3030", + "repository": "node0", + "username": "admin", + "password": "" + } + }, + "ot-graphdb": { + "package": "./triple-store/implementation/ot-graphdb/ot-graphdb", + "config": { + "url": "http://localhost:7200", + "repository": "node0", + "username": "admin", + "password": "" + } + } + } + }, + "validation": { + "enabled": true, + "implementation": { + "merkle-validation": { + "package": "./validation/implementation/merkle-validation", + "config": {} + } + } + }, + "blockchain": { + "enabled": true, + "implementation": { + "ganache": { + "package": "./blockchain/implementation/ganache/ganache-service", + "config": { + "blockchainTitle": "ganache", + "networkId": "ganache::testnet", + "hubContractAddress": "0xF21dD87cFC5cF5D073398833AFe5EFC543b78a00", + "rpcEndpoints": ["http://localhost:7545"], + "evmManagementPublicKey": "0x1B420da5f7Be66567526E32bc68ab29F1A63765A" + } + }, + "otp": { + "package": "./blockchain/implementation/ot-parachain/ot-parachain-service", + "config": { + "networkId": "otp::testnet", + "hubContractAddress": "0x6e002616ADf12D4Cc908976eB16a7646B6cD6596", + "rpcEndpoints": ["wss://parachain-tempnet-01.origin-trail.network"], + "evmManagementPublicKey": "0x1B420da5f7Be66567526E32bc68ab29F1A63765A" + } + }, + "polygon": { + "package": "./blockchain/implementation/polygon/polygon-service", + "config": { + "networkId": "polygon::testnet", + "hubContractAddress": "0xdaa16AC171CfE8Df6F79C06E7EEAb2249E2C9Ec8", + "gasPriceOracleLink": "https://gasstation-mumbai.matic.today/v2", + "rpcEndpoints": [ + "https://matic-mumbai.chainstacklabs.com", + "https://rpc-mumbai.matic.today", + "https://matic-testnet-archive-rpc.bwarelabs.com" + ], + "evmManagementPublicKey": "0x1B420da5f7Be66567526E32bc68ab29F1A63765A" + } + } + } } }, + "commandExecutorVerboseLoggingEnabled": false, + "minimumReplicationFactor": 5, + "publishFindNodesCount": 20, "appDataPath": "data", - "blockchain": [ - { - "blockchainTitle": "Polygon", - "networkId": "polygon::mainnet", - "hubContractAddress": "0xFD6ECaed420aB70fb97eB2423780517dc425ef81", - "rpcEndpoints": [ - "https://rpc-mumbai.maticvigil.com/", - "https://matic-mumbai.chainstacklabs.com", - "https://rpc-mumbai.matic.today", - "https://matic-testnet-archive-rpc.bwarelabs.com" - ] - } - ], - "graphDatabase": { - "implementation": "GraphDB", - "url": "http://localhost:7200", - "name": "node0", - "username": "admin", - "password": "" - }, - "logLevel": "trace", - "replicationFactor": 5, - "rpcPort": 8900, - "network": { - "port": 9000, - "bootstrap": [] - }, - "ipWhitelist": ["::1", "127.0.0.1"], - "telemetryHub": { - "enabled": false, - "packages": ["ot-telemetry-collector"], - "url": "" + "logLevel": "info", + "telemetry": { + "enabled": true, + "sendTelemetryData": false, + "signalingServerUrl": "null" }, - "operationalDatabase": { - "databaseName": "operationaldb" + "auth": { + "ipBasedAuthEnabled": true, + "tokenBasedAuthEnabled": false, + "loggingEnabled": true, + "ipWhitelist": ["::1", "127.0.0.1"], + "publicOperations": [] } }, "test": { @@ -100,7 +181,7 @@ } }, "repository": { - "enabled": false, + "enabled": true, "implementation": { "sequelize-repository": { "package": "./repository/implementation/sequelize/sequelize-repository", @@ -115,39 +196,72 @@ } } } + }, + "blockchain": { + "enabled": true, + "defaultImplementation": "ganache", + "implementation": { + "ganache": { + "package": "./blockchain/implementation/ganache/ganache-service", + "config": { + "blockchainTitle": "ganache", + "networkId": "ganache::testnet", + "hubContractAddress": "0xF21dD87cFC5cF5D073398833AFe5EFC543b78a00", + "rpcEndpoints": ["http://localhost:7545"] + } + } + } + }, + "tripleStore": { + "enabled": true, + "defaultImplementation": "ot-graphdb", + "implementation": { + "ot-blazegraph": { + "package": "./triple-store/implementation/ot-blazegraph/ot-blazegraph", + "config": { + "url": "http://localhost:9999/blazegraph", + "repository": "node0", + "username": "admin", + "password": "" + } + }, + "ot-fuseki": { + "package": "./triple-store/implementation/ot-fuseki/ot-fuseki", + "config": { + "url": "http://localhost:3030", + "repository": "node0", + "username": "admin", + "password": "" + } + }, + "ot-graphdb": { + "package": "./triple-store/implementation/ot-graphdb/ot-graphdb", + "config": { + "url": "http://localhost:7200", + "repository": "node0", + "username": "admin", + "password": "" + } + } + } } }, + "commandExecutorVerboseLoggingEnabled": false, + "minimumReplicationFactor": 5, + "publishFindNodesCount": 20, "appDataPath": "data", - "blockchain": [ - { - "blockchainTitle": "ganache", - "networkId": "ganache::testnet", - "hubContractAddress": "", - "rpcEndpoints": ["http://localhost:7545"] - } - ], - "graphDatabase": { - "implementation": "GraphDB", - "url": "http://localhost:7200", - "name": "node0", - "username": "admin", - "password": "" - }, "logLevel": "trace", - "replicationFactor": 5, - "rpcPort": 8900, - "network": { - "port": 9000, - "bootstrap": [] - }, - "ipWhitelist": ["::1", "127.0.0.1"], - "telemetryHub": { - "enabled": false, - "packages": ["ot-telemetry-collector"], - "url": "" + "telemetry": { + "enabled": true, + "sendTelemetryData": false, + "signalingServerUrl": "null" }, - "operationalDatabase": { - "databaseName": "operationaldb" + "auth": { + "ipBasedAuthEnabled": true, + "tokenBasedAuthEnabled": false, + "loggingEnabled": true, + "ipWhitelist": ["::1", "127.0.0.1"], + "publicOperations": [] } }, "testnet": { @@ -163,17 +277,44 @@ } } }, + "network": { + "enabled": true, + "implementation": { + "libp2p-service": { + "package": "./network/implementation/libp2p-service", + "config": { + "port": 9000, + "bootstrap": [ + "/ip4/139.59.174.24/tcp/9000/p2p/QmU7p61f8qgzCtfTEUynJaqnsLRN4QExjtWfsMRQ7oiMuS", + "/ip4/142.93.166.214/tcp/9000/p2p/QmXPcjsvURvyC4hEbwgirRue7KzcvpvYgsaPUharRMJAcP", + "/ip4/178.128.117.211/tcp/9000/p2p/QmVdXs1PhoXcXYWGEH6Q4BnGN9uNNUcm4ctMt2Pttq8Dgc", + "/ip4/3.125.64.137/tcp/9000/p2p/QmQWvBBAJKTwPTzHr47LZaLWFwCESE97iwJwmYb7spZuHt", + "/ip4/3.126.112.75/tcp/9000/p2p/QmeB5srsgkwwhkVieHXunjsVsGkV9MyL4EqV122u1wZHoj" + ] + } + } + } + }, "httpClient": { "enabled": true, "implementation": { "express-http-client": { "package": "./http-client/implementation/express-http-client", - "config": {} + "config": { + "useSsl": true, + "port": 8900, + "sslKeyPath": "/root/certs/privkey.pem", + "sslCertificatePath": "/root/certs/fullchain.pem", + "rateLimiter": { + "timeWindowSeconds": 60, + "maxRequests": 10 + } + } } } }, "repository": { - "enabled": false, + "enabled": true, "implementation": { "sequelize-repository": { "package": "./repository/implementation/sequelize/sequelize-repository", @@ -188,48 +329,93 @@ } } } + }, + "blockchain": { + "enabled": true, + "defaultImplementation": "otp", + "implementation": { + "otp": { + "package": "./blockchain/implementation/ot-parachain/ot-parachain-service", + "config": { + "networkId": "parachain::testnet", + "hubContractAddress": "0x256736AEb3f19AC6738E9F4D10C9B61da71CEB9F", + "rpcEndpoints": ["wss://lofar.origin-trail.network"] + } + }, + "polygon": { + "package": "./blockchain/implementation/polygon/polygon-service", + "config": { + "networkId": "polygon::testnet", + "hubContractAddress": "0xdaa16AC171CfE8Df6F79C06E7EEAb2249E2C9Ec8", + "gasPriceOracleLink": "https://gasstation-mumbai.matic.today/v2", + "rpcEndpoints": [ + "https://matic-mumbai.chainstacklabs.com", + "https://rpc-mumbai.matic.today", + "https://matic-testnet-archive-rpc.bwarelabs.com" + ] + } + } + } + }, + "validation": { + "enabled": true, + "implementation": { + "merkle-validation": { + "package": "./validation/implementation/merkle-validation", + "config": {} + } + } + }, + "tripleStore": { + "enabled": true, + "defaultImplementation": "ot-blazegraph", + "implementation": { + "ot-blazegraph": { + "package": "./triple-store/implementation/ot-blazegraph/ot-blazegraph", + "config": { + "url": "http://localhost:9999/blazegraph", + "repository": "node0", + "username": "admin", + "password": "" + } + }, + "ot-fuseki": { + "package": "./triple-store/implementation/ot-fuseki/ot-fuseki", + "config": { + "url": "http://localhost:3030", + "repository": "node0", + "username": "admin", + "password": "" + } + }, + "ot-graphdb": { + "package": "./triple-store/implementation/ot-graphdb/ot-graphdb", + "config": { + "url": "http://localhost:7200", + "repository": "node0", + "username": "admin", + "password": "" + } + } + } } }, + "commandExecutorVerboseLoggingEnabled": false, + "minimumReplicationFactor": 5, + "publishFindNodesCount": 20, "appDataPath": "data", - "blockchain": [ - { - "blockchainTitle": "Polygon", - "networkId": "polygon::testnet", - "hubContractAddress": "0xFD6ECaed420aB70fb97eB2423780517dc425ef81", - "rpcEndpoints": [ - "https://rpc-mumbai.maticvigil.com/", - "https://matic-mumbai.chainstacklabs.com", - "https://rpc-mumbai.matic.today", - "https://matic-testnet-archive-rpc.bwarelabs.com" - ] - } - ], - "graphDatabase": { - "implementation": "GraphDB", - "url": "http://localhost:7200", - "name": "node0", - "username": "admin", - "password": "" - }, "logLevel": "trace", - "replicationFactor": 5, - "rpcPort": 8900, - "network": { - "port": 9000, - "bootstrap": [ - "/ip4/165.232.122.94/tcp/9000/p2p/QmQ2zigjQikYnyYUSXZydNXrDRhBut2mubwJBaLXobMt3A", - "/ip4/46.101.111.223/tcp/9000/p2p/QmdTKEP4DDSwYzX2CHEsBfpEAKAVyE4mPq9ouh4ehZZbg5", - "/ip4/46.101.153.21/tcp/9000/p2p/QmXzmTqVT3TPUtTz4dBDN5NWSABqnX9rKXCG9WCLXMfEaM" - ] - }, - "ipWhitelist": ["::1", "127.0.0.1"], - "telemetryHub": { + "telemetry": { "enabled": true, - "packages": ["ot-telemetry-collector"], - "url": "https://polaris.delta.origin-trail.network/metrics/" + "sendTelemetryData": true, + "signalingServerUrl": "https://testnet-signaling.origin-trail.network/signal" }, - "operationalDatabase": { - "databaseName": "operationaldb" + "auth": { + "ipBasedAuthEnabled": true, + "tokenBasedAuthEnabled": false, + "loggingEnabled": true, + "ipWhitelist": ["::1", "127.0.0.1"], + "publicOperations": [] } }, "mainnet": { @@ -250,12 +436,21 @@ "implementation": { "express-http-client": { "package": "./http-client/implementation/express-http-client", - "config": {} + "config": { + "useSsl": true, + "port": 8900, + "sslKeyPath": "/root/certs/privkey.pem", + "sslCertificatePath": "/root/certs/fullchain.pem", + "rateLimiter": { + "timeWindowSeconds": 60, + "maxRequests": 10 + } + } } } }, "repository": { - "enabled": false, + "enabled": true, "implementation": { "sequelize-repository": { "package": "./repository/implementation/sequelize/sequelize-repository", @@ -270,32 +465,89 @@ } } } + }, + "validation": { + "enabled": true, + "implementation": { + "merkle-validation": { + "package": "./validation/implementation/merkle-validation", + "config": {} + } + } + }, + "tripleStore": { + "enabled": true, + "defaultImplementation": "ot-blazegraph", + "implementation": { + "ot-blazegraph": { + "package": "./triple-store/implementation/ot-blazegraph/ot-blazegraph", + "config": { + "url": "http://localhost:9999/blazegraph", + "repository": "node0", + "username": "admin", + "password": "" + } + }, + "ot-fuseki": { + "package": "./triple-store/implementation/ot-fuseki/ot-fuseki", + "config": { + "url": "http://localhost:3030", + "repository": "node0", + "username": "admin", + "password": "" + } + }, + "ot-graphdb": { + "package": "./triple-store/implementation/ot-graphdb/ot-graphdb", + "config": { + "url": "http://localhost:7200", + "repository": "node0", + "username": "admin", + "password": "" + } + } + } + }, + "blockchain": { + "enabled": true, + "implementation": { + "otp": { + "package": "./blockchain/implementation/ot-parachain/ot-parachain-service", + "config": { + "networkId": "otp::mainnet", + "hubContractAddress": "", + "rpcEndpoints": [] + } + }, + "polygon": { + "package": "./blockchain/implementation/polygon/polygon-service", + "config": { + "networkId": "polygon::mainnet", + "hubContractAddress": "", + "gasPriceOracleLink": "", + "rpcEndpoints": [] + } + } + } } }, + "minimumReplicationFactor": 5, + "publishFindNodesCount": 20, + "signalingServerUrl": "http://devnet-signaling.origin-trail.network:3000/signal", + "commandExecutorVerboseLoggingEnabled": false, "appDataPath": "data", - "blockchain": [], - "graphDatabase": { - "implementation": "GraphDB", - "url": "http://localhost:7200", - "name": "node0", - "username": "admin", - "password": "" - }, "logLevel": "trace", - "replicationFactor": 5, - "rpcPort": 8900, - "network": { - "port": 9000, - "bootstrap": [] - }, - "ipWhitelist": ["::1", "127.0.0.1"], - "telemetryHub": { + "telemetry": { "enabled": false, - "packages": ["ot-telemetry-collector"], - "url": "" + "sendTelemetryData": false, + "signalingServerUrl": "http://devnet-signaling.origin-trail.network:3000/signal" }, - "operationalDatabase": { - "databaseName": "operationaldb" + "auth": { + "ipBasedAuthEnabled": true, + "tokenBasedAuthEnabled": false, + "loggingEnabled": true, + "ipWhitelist": ["::1", "127.0.0.1"], + "publicOperations": [] } } } diff --git a/config/sequelizeConfig.js b/config/sequelizeConfig.js deleted file mode 100644 index 6018c8788..000000000 --- a/config/sequelizeConfig.js +++ /dev/null @@ -1,17 +0,0 @@ -require('dotenv').config(); - -module.exports = { - username: 'root', - password: '', - database: 'operationaldb', - dialect: 'mysql', - host: 'localhost', - port: 3306, - migrationStorageTableName: 'sequelize_meta', - logging: false, - operatorsAliases: '0', - define: { - underscored: true, - timestamps: true, - }, -}; diff --git a/external/blazegraph-service.js b/external/blazegraph-service.js deleted file mode 100644 index d283fbe51..000000000 --- a/external/blazegraph-service.js +++ /dev/null @@ -1,30 +0,0 @@ -const axios = require('axios'); -const SparqlqueryService = require('./sparqlquery-service'); - -class BlazegraphService extends SparqlqueryService{ - constructor(config) { - super({ - sparqlEndpoint: `${config.url}/sparql`, - sparqlEndpointUpdate: `${config.url}/sparql`, - }) - this.url = config.url - } - - async healthCheck() { - try { - const response = await axios.get(`${this.url}/status`, {}); - if (response.data !== null) { - return true; - } - return false; - } catch (e) { - return false; - } - } - - getName() { - return 'Blazegraph'; - } -} - -module.exports = BlazegraphService; diff --git a/external/fuseki-service.js b/external/fuseki-service.js deleted file mode 100644 index 6ed6f2f11..000000000 --- a/external/fuseki-service.js +++ /dev/null @@ -1,30 +0,0 @@ -const axios = require('axios'); -const SparqlqueryService = require('./sparqlquery-service'); - -class FusekiService extends SparqlqueryService{ - constructor(config) { - super({ - sparqlEndpoint: `${config.url}/${config.name}/sparql`, - sparqlEndpointUpdate: `${config.url}/${config.name}/update`, - }) - this.url = config.url - } - - async healthCheck() { - try { - const response = await axios.get(`${this.url}/$/ping`, {}); - if (response.data !== null) { - return true; - } - return false; - } catch (e) { - return false; - } - } - - getName() { - return 'Fuseki'; - } -} - -module.exports = FusekiService; diff --git a/external/kad-identity-ranking-service.js b/external/kad-identity-ranking-service.js deleted file mode 100644 index c844de256..000000000 --- a/external/kad-identity-ranking-service.js +++ /dev/null @@ -1,42 +0,0 @@ -const { sha256 } = require('multiformats/hashes/sha2'); - -class KadIdentityRanking { - initialize(logger) { - this.logger = logger; - } - - /** - * Default distance function. Finds the XOR - * distance between firstId and secondId. - * - * @param {Uint8Array} firstId Uint8Array containing first id. - * @param {Uint8Array} secondId Uint8Array containing second id. - * @return {Number} Integer The XOR distance between firstId - * and secondId. - */ - distance(firstId, secondId) { - let distance = 0; - let i = 0; - const min = Math.min(firstId.length, secondId.length); - const max = Math.max(firstId.length, secondId.length); - for (; i < min; i += 1) { - distance = distance * 256 + (firstId[i] ^ secondId[i]); - } - for (; i < max; i += 1) distance = distance * 256 + 255; - return distance; - } - - async execute(nodes, topic, replicationFactor) { - const encodedKey = new TextEncoder().encode(topic); - const id = (await sha256.digest(encodedKey)).digest; - - nodes.sort((first_node, second_node) => this.distance(id, first_node._id) - this.distance(id, second_node._id)); - for (const node of nodes) { - this.logger.info(`XOR distance between topic ${topic} and node ${node._idB58String}: ${this.distance(id, node._id)}`); - } - - return nodes.slice(0, replicationFactor); - } -} - -module.exports = KadIdentityRanking; diff --git a/external/libp2p-service.js b/external/libp2p-service.js deleted file mode 100644 index ba83a56ce..000000000 --- a/external/libp2p-service.js +++ /dev/null @@ -1,335 +0,0 @@ -const Libp2p = require('libp2p'); -const {Record} = require('libp2p-record'); -const KadDHT = require('libp2p-kad-dht'); -const Bootstrap = require('libp2p-bootstrap'); -const {NOISE} = require('libp2p-noise'); -const MPLEX = require('libp2p-mplex'); -const TCP = require('libp2p-tcp'); -const pipe = require('it-pipe'); -const {sha256} = require('multiformats/hashes/sha2'); -const PeerId = require("peer-id"); -const { BufferList } = require('bl') -const { InMemoryRateLimiter } = require("rolling-rate-limiter"); -const constants = require('../modules/constants'); - -const initializationObject = { - addresses: { - listen: ['/ip4/0.0.0.0/tcp/9000'], - }, - modules: { - transport: [TCP], - streamMuxer: [MPLEX], - connEncryption: [NOISE], - dht: KadDHT, - }, - dialer: { - dialTimeout: 2e3, - }, - config: { - dht: { - enabled: true, - }, - }, -}; - -class Libp2pService { - constructor(config) { - this.config = config; - } - - initialize(logger) { - this.logger = logger; - return new Promise(async (resolve, reject) => { - if (this.config.bootstrapMultiAddress.length > 0) { - initializationObject.modules.peerDiscovery = [Bootstrap]; - initializationObject.config.peerDiscovery = { - autoDial: true, - [Bootstrap.tag]: { - enabled: true, - list: this.config.bootstrapMultiAddress, - }, - }; - } - initializationObject.addresses = { - listen: [`/ip4/0.0.0.0/tcp/${this.config.port}`] // for production - // announce: ['/dns4/auto-relay.libp2p.io/tcp/443/wss/p2p/QmWDn2LY8nannvSWJzruUYoLZ4vV83vfCBwd8DipvdgQc3'] - }; - let id; - let privKey; - if (!this.config.peerId) { - if (!this.config.privateKey) { - id = await PeerId.create({bits: 1024, keyType: 'RSA'}) - privKey = id.toJSON().privKey; - } else { - privKey = this.config.privateKey; - id = await PeerId.createFromPrivKey(this.config.privateKey); - } - this.config.privateKey = privKey; - this.config.peerId = id; - } - - initializationObject.peerId = this.config.peerId; - this.workerPool = this.config.workerPool; - this._initializeRateLimiters(); - - Libp2p.create(initializationObject).then((node) => { - this.node = node; - this._initializeNodeListeners(); - }) - .then(() => this.node.start()) - .then((result) => { - const port = parseInt(this.node.multiaddrs.toString().split('/')[4], 10); - const peerId = this.node.peerId._idB58String; - this.config.id = peerId; - this.logger.info(`Network ID is ${peerId}, connection port is ${port}`); - resolve({ - peerId: this.config.peerId, - privateKey: this.config.privateKey, - }); - }) - .catch((err) => { - reject(err); - }); - }); - } - - _initializeRateLimiters() { - const basicRateLimiter = new InMemoryRateLimiter({ - interval: constants.NETWORK_API_RATE_LIMIT.TIME_WINDOW_MILLS, - maxInInterval: constants.NETWORK_API_RATE_LIMIT.MAX_NUMBER, - }); - - const spamDetection = new InMemoryRateLimiter({ - interval: constants.NETWORK_API_SPAM_DETECTION.TIME_WINDOW_MILLS, - maxInInterval: constants.NETWORK_API_SPAM_DETECTION.MAX_NUMBER, - }); - - this.rateLimiter = { - basicRateLimiter, - spamDetection, - } - - this.blackList = {}; - } - - _initializeNodeListeners() { - this.node.on('peer:discovery', (peer) => { - this._onPeerDiscovery(peer); - }); - this.node.connectionManager.on('peer:connect', (connection) => { - this._onPeerConnect(connection); - }); - } - - _onPeerDiscovery(peer) { - this.logger.debug(`Node ${this.node.peerId._idB58String} discovered ${peer._idB58String}`); - } - - _onPeerConnect(connection) { - this.logger.debug(`Node ${this.node.peerId._idB58String} connected to ${connection.remotePeer.toB58String()}`); - } - - async findNodes(key, protocol) { - const encodedKey = new TextEncoder().encode(key); - // Creates a DHT ID by hashing a given Uint8Array - const id = (await sha256.digest(encodedKey)).digest; - const nodes = this.node._dht.peerRouting.getClosestPeers(id); - const result = new Set(); - for await (const node of nodes) { - if(this.node.peerStore.peers.get(node._idB58String).protocols.includes(protocol)){ - result.add(node); - } - } - this.logger.info(`Found ${result.size} nodes`); - - return [...result]; - } - - getPeers() { - return this.node.connectionManager.connections; - } - - getPeerId() { - return this.node.peerId._idB58String; - } - - store(peer, key, object) { - const encodedKey = new TextEncoder().encode(key); - const encodedObject = new TextEncoder().encode(object); - const record = this._createPutRecord(encodedKey, encodedObject); - return this.node._dht._putValueToPeer(encodedKey, record, peer); - } - - _createPutRecord(key, value) { - const rec = new Record(key, value, new Date()); - return rec.serialize(); - } - - async prepareForSending(data) { - if(constants.NETWORK_RESPONSES[data]) { - data = constants.STRINGIFIED_NETWORK_RESPONSES[data]; - } else { - data = await this.workerPool.exec('JSONStringify', [data]); - } - return Buffer.from(data); - } - - async handleMessage(eventName, handler, options) { - this.logger.info(`Enabling network protocol: ${eventName}`); - - let async = false, timeout = constants.NETWORK_HANDLER_TIMEOUT; - if (options) { - async = options.async; - timeout = options.timeout; - } - this.node.handle(eventName, async (handlerProps) => { - const {stream} = handlerProps; - let timestamp = Date.now(); - const remotePeerId = handlerProps.connection.remotePeer._idB58String; - if(await this.limitRequest(remotePeerId)) { - const preparedBlockedResponse = await this.prepareForSending(constants.NETWORK_RESPONSES.BLOCKED); - await pipe( - [preparedBlockedResponse], - stream - ); - return; - } - let data = await pipe( - stream, - async function (source) { - const bl = new BufferList() - for await (const msg of source) { - bl.append(msg); - } - // console.log(`Receiving data using stream: ${result.toString()}`); - return bl; - } - ) - try { - data = await this.workerPool.exec('JSONParse', [data.toString()]); - this.logger.info(`Receiving message from ${remotePeerId} to ${this.config.id}: event=${eventName};`); - if (!async) { - const result = await handler(data); - this.logger.info(`Sending response from ${this.config.id} to ${remotePeerId}: event=${eventName};`); - const preparedData = await this.prepareForSending(result); - await pipe( - [Buffer.from(preparedData)], - stream, - ) - } else { - const preparedAckResponse = await this.prepareForSending(constants.NETWORK_RESPONSES.ACK); - await pipe( - [preparedAckResponse], - stream - ) - - this.logger.info(`Sending response from ${this.config.id} to ${remotePeerId}: event=${eventName};`); - const result = await handler(data); - if (Date.now() <= timestamp + timeout) { - await this.sendMessage(`${eventName}/result`, result, handlerProps.connection.remotePeer); - } else { - this.logger.warn(`Too late to send response from ${this.config.id} to ${remotePeerId}: event=${eventName};`); - } - } - } catch (e) { - const stringifiedData = await this.workerPool.exec('JSONStringify', [data]); - this.logger.error({ - msg: `Error: ${e}, stack: ${e.stack} \n Data received: ${stringifiedData}`, - Event_name: constants.ERROR_TYPE.LIBP2P_HANDLE_MSG_ERROR, - }); - const preparedErrorResponse = await this.prepareForSending(constants.NETWORK_RESPONSES.ERROR); - await pipe( - [preparedErrorResponse], - stream - ); - } - }); - } - - async sendMessage(eventName, data, peerId) { - this.logger.info(`Sending message from ${this.config.id} to ${peerId._idB58String}: event=${eventName};`); - const {stream} = await this.node.dialProtocol(peerId, eventName); - const preparedData = await this.prepareForSending(data); - const response = await pipe( - [Buffer.from(preparedData)], - stream, - async function (source) { - const bl = new BufferList() - for await (const msg of source) { - bl.append(msg); - } - // console.log(`Receiving data using stream: ${result.toString()}`); - return bl; - }, - ) - - // TODO: Remove - Backwards compatibility check with 1.30 and lower - if(response.toString() === constants.NETWORK_RESPONSES.ACK) { - return null; - } - - const parsedData = await this.workerPool.exec('JSONParse', [response.toString()]); - const suppressedResponses = [constants.NETWORK_RESPONSES.ACK, constants.NETWORK_RESPONSES.BLOCKED, constants.NETWORK_RESPONSES.ERROR]; - if(suppressedResponses.includes(parsedData)) { - return null; - } - - return parsedData; - } - - healthCheck() { - // TODO: broadcast ping or sent msg to yourself - const connectedNodes = this.node.connectionManager.size; - if (connectedNodes > 0) return true; - return false; - } - - async limitRequest(remotePeerId) { - if(this.blackList[remotePeerId]){ - const remainingMinutes = Math.floor( - constants.NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES - - (Date.now() - this.blackList[remotePeerId]) / (1000 * 60) - ); - - if(remainingMinutes > 0) { - this.logger.info(`Blocking request from ${remotePeerId}. Node is blacklisted for ${remainingMinutes} minutes.`); - - return true; - } else { - delete this.blackList[remotePeerId] - } - } - - if(await this.rateLimiter.spamDetection.limit(remotePeerId)) { - this.blackList[remotePeerId] = Date.now(); - this.logger.info( - `Blocking request from ${remotePeerId}. Spammer detected and blacklisted for ${constants.NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES} minutes.` - ); - - return true; - } else if (await this.rateLimiter.basicRateLimiter.limit(remotePeerId)) { - this.logger.info(`Blocking request from ${remotePeerId}. Max number of requests exceeded.`); - - return true; - } - - return false; - } - - async restartService() { - this.logger.info('Restrating libp2p service...'); - // TODO: reinitialize service - } - - getPrivateKey() { - return this.node.peerId.privKey; - } - - getName() { - return 'Libp2p'; - } - -} - - -module.exports = Libp2pService; diff --git a/external/merkle-validation-service.js b/external/merkle-validation-service.js deleted file mode 100644 index 77070a631..000000000 --- a/external/merkle-validation-service.js +++ /dev/null @@ -1,230 +0,0 @@ -const MerkleTools = require('merkle-tools'); -const SHA256 = require('crypto-js/sha256'); - -const elliptic = require('elliptic'); - -const secp256k1 = new elliptic.ec('secp256k1'); -const sha3 = require('js-sha3'); - -const BytesUtilities = require('./BytesUtilities'); - -const _slicedToArray = (function () { - function sliceIterator(arr, i) { - const _arr = []; - let _n = true; - let _d = false; - let _e = undefined; - try { - for (let _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i.return) _i.return(); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - - return function (arr, i) { - if (Array.isArray(arr)) { - return arr; - } else if (Symbol.iterator in Object(arr)) { - return sliceIterator(arr, i); - } - throw new TypeError('Invalid attempt to destructure non-iterable instance'); - }; -}()); - -const SIGNATURE_TYPE = 'ethereum-signature'; - - -class MerkleValidationService { - constructor(config) { - this.config = config; - } - - initialize(logger) { - this.logger = logger; - } - - calculateHash(string) { - const hash = SHA256(string); - return hash.toString(); - } - - calculateRootHash(assertion) { - const tree = new MerkleTools({ - hashType: 'sha256', - }); - for (const leaf of assertion) { - tree.addLeaf(leaf, true); - } - tree.makeTree(); - return tree.getMerkleRoot().toString('hex'); - } - - getMerkleTree(rdf) { - const tree = new MerkleTools({ - hashType: 'sha256', - }); - for (const leaf of rdf) { - tree.addLeaf(leaf, true); - } - tree.makeTree() - return tree; - } - - validateProof(triples, proofs, rootHash) { - const tree = new MerkleTools(); - for (let i = 0; i < triples.length; i += 1) { - const leaf = SHA256(triples[i]).toString(); - const verified = tree.validateProof(proofs[i], leaf, rootHash); - if (!verified) { - throw new Error(`Invalid proofs for triple: ${triples[i]}`); - } - } - return `0x${rootHash}`; - } - - sign(content, privateKey) { - const signature = secp256k1.keyFromPrivate(Buffer.from(BytesUtilities.normalizeHex(privateKey).slice(2), 'hex')) - .sign(Buffer.from(content, 'hex'), {canonical: true}); - - const result = this.encodeSignature([ - BytesUtilities.fromString(BytesUtilities.fromNumber(27 + signature.recoveryParam)), - BytesUtilities.pad(32, BytesUtilities.fromNat(`0x${signature.r.toString(16)}`)), - BytesUtilities.pad(32, BytesUtilities.fromNat(`0x${signature.s.toString(16)}`)), - ]); - - return result.signature; - } - - verify(hash, signature, publicKey) { - try { - let vrs; - if (Object.keys(signature).includes('r') && - Object.keys(signature).includes('s') && - Object.keys(signature).includes('v')) { - vrs = { - v: BytesUtilities.toNumber(signature.v), - r: signature.r.slice(2), - s: signature.s.slice(2), - }; - } else { - const decoded = this.decodeSignature(signature); - - vrs = { - v: BytesUtilities.toNumber(decoded[0]), - r: decoded[1].slice(2), - s: decoded[2].slice(2), - }; - } - - const pubKeyRecovered = secp256k1.recoverPubKey( - Buffer.from(hash, 'hex'), - vrs, - vrs.v < 2 ? vrs.v : 1 - (vrs.v % 2), - ); - - if (secp256k1.verify(hash, vrs, pubKeyRecovered)) { - const publicKeyRecovered = `0x${pubKeyRecovered.encode('hex', false).slice(2)}`; - const publicHash = sha3.keccak256(Buffer.from(publicKeyRecovered.slice(2), 'hex')); - const wallet = this.toChecksum(`0x${publicHash.slice(-40)}`); - - return BytesUtilities.normalizeHex(wallet).toLowerCase() - === BytesUtilities.normalizeHex(publicKey).toLowerCase(); - } - return false; - } catch (e) { - return false; - } - } - - recover(content, signature) { - try { - let vrs; - if (Object.keys(signature).includes('r') && - Object.keys(signature).includes('s') && - Object.keys(signature).includes('v')) { - vrs = { - v: BytesUtilities.toNumber(signature.v), - r: signature.r.slice(2), - s: signature.s.slice(2), - }; - } else { - const decoded = this.decodeSignature(signature); - - vrs = { - v: BytesUtilities.toNumber(decoded[0]), - r: decoded[1].slice(2), - s: decoded[2].slice(2), - }; - } - - const hash = this.hashContent(content); - const pubKeyRecovered = secp256k1.recoverPubKey( - Buffer.from(hash.slice(2), 'hex'), - vrs, - vrs.v < 2 ? vrs.v : 1 - (vrs.v % 2), - ); - - const publicKeyRecovered = `0x${pubKeyRecovered.encode('hex', false).slice(2)}`; - const publicHash = sha3.keccak256(Buffer.from(publicKeyRecovered.slice(2), 'hex')); - return this.toChecksum(`0x${publicHash.slice(-40)}`); - } catch (e) { - return undefined; - } - } - - encodeSignature(_ref) { - const _ref2 = _slicedToArray(_ref); - const v = _ref2[0]; - const r = BytesUtilities.pad(32, _ref2[1]); - const s = BytesUtilities.pad(32, _ref2[2]); - - return { - signature: BytesUtilities.flatten([r, s, v]), r, s, v, - }; - } - - decodeSignature(hex) { - return [ - BytesUtilities.slice(64, BytesUtilities.length(hex), hex), - BytesUtilities.slice(0, 32, hex), - BytesUtilities.slice(32, 64, hex)]; - } - - toChecksum(address) { - var addressHash = sha3.keccak256(address.slice(2)); - var checksumAddress = '0x'; - for (var i = 0; i < 40; i += 1) { - checksumAddress += parseInt(addressHash[i + 2], 16) > 7 ? - address[i + 2].toUpperCase() : - address[i + 2]; - } - return checksumAddress; - } - - hashContent(content) { - const message = BytesUtilities.isHexStrict(content) ? - BytesUtilities.hexToBytes(content) : content; - const messageBuffer = Buffer.from(message); - const preamble = `\x19Ethereum Signed Message:\n${message.length}`; - const preambleBuffer = Buffer.from(preamble); - const ethMessage = Buffer.concat([preambleBuffer, messageBuffer]); - return `0x${sha3.keccak256(ethMessage)}`; - } - - getName() { - return 'Merkle validation'; - } -} - -module.exports = MerkleValidationService; diff --git a/external/sparqlquery-service.js b/external/sparqlquery-service.js deleted file mode 100644 index 5699f5290..000000000 --- a/external/sparqlquery-service.js +++ /dev/null @@ -1,255 +0,0 @@ -const Engine = require('@comunica/query-sparql').QueryEngine; -const constants = require('../modules/constants'); - -class SparqlqueryService { - constructor(config) { - this.config = config; - } - - async initialize(logger) { - this.logger = logger; - this.logger.info('Sparql Query module initialized successfully'); - this.queryEngine = new Engine(); - this.filtertype = { - KEYWORD: 'keyword', - KEYWORDPREFIX: 'keywordPrefix', - TYPES: 'types', - ISSUERS: 'issuers', - }; - const sources = [ - { - type: 'sparql', - value: `${this.config.sparqlEndpoint}`, - }, - ]; - - this.insertContext = { - sources, - destination: { - type: 'sparql', - value: `${this.config.sparqlEndpointUpdate}`, - }, - }; - this.queryContext = { - sources, - }; - } - - async insert(triples, rootHash) { - const askQuery = `ASK WHERE { GRAPH <${rootHash}> { ?s ?p ?o } }`; - const exists = await this.ask(askQuery); - const insertion = ` - PREFIX schema: - INSERT DATA - { GRAPH <${rootHash}> - { ${triples} } - }`; - if (!exists) { - await this.queryEngine.queryVoid(insertion, this.insertContext); - return true; - } - } - - async construct(query) { - const result = await this.executeQuery(query); - return result; - } - - async ask(query) { - const result = await this.queryEngine.queryBoolean(query, this.queryContext); - return result; - } - - async resolve(uri) { - const escapedUri = this.cleanEscapeCharacter(uri); - const query = `PREFIX schema: - CONSTRUCT { ?s ?p ?o } - WHERE { - GRAPH <${constants.DID_PREFIX}:${escapedUri}> { - ?s ?p ?o - } - }`; - const nquads = await this.construct(query); - return nquads; - } - - async assertionsByAsset(uri) { - const query = `PREFIX schema: - SELECT ?assertionId ?issuer ?timestamp - WHERE { - ?assertionId schema:hasUALs "${uri}" ; - schema:hasTimestamp ?timestamp ; - schema:hasIssuer ?issuer . - } - ORDER BY DESC(?timestamp)`; - const result = await this.execute(query); - - return result; - } - - async findAssertions(nquads) { - const query = `SELECT ?g - WHERE { - GRAPH ?g { - ${nquads} - } - }`; - let graph = await this.execute(query); - graph = graph.map((x) => x.g.replace(`${constants.DID_PREFIX}:`, '')); - if (graph.length && graph[0] === 'http://www.bigdata.com/rdf#nullGraph') { - return []; - } - return graph; - } - - async findAssertionsByKeyword(query, options, localQuery) { - if (options.prefix && !this.isBoolean(options.prefix)) { - this.logger.error(`Failed FindassertionsByKeyword: ${options.prefix} is not a boolean`); - throw new Error('Prefix is not an boolean'); - } - if (localQuery && !this.isBoolean(localQuery)) { - this.logger.error(`Failed FindassertionsByKeyword: ${localQuery} is not a boolean`); - throw new Error('Localquery is not an boolean'); - } - let limitQuery = ''; - limitQuery = this.createLimitQuery(options); - - const publicVisibilityQuery = !localQuery - ? ' ?assertionId schema:hasVisibility "public" .' - : ''; - const filterQuery = options.prefix - ? this.createFilterParameter(query, this.filtertype.KEYWORDPREFIX) - : this.createFilterParameter(query, this.filtertype.KEYWORD); - - const sparqlQuery = `PREFIX schema: - SELECT distinct ?assertionId - WHERE { - ?assertionId schema:hasKeywords ?keyword . - ${publicVisibilityQuery} - ${filterQuery} - } - ${limitQuery}`; - - const result = await this.execute(sparqlQuery); - return result; - } - - async findAssetsByKeyword(query, options, localQuery) { - if (options.prefix && !this.isBoolean(options.prefix)) { - this.logger.error(`Failed FindAssetsByKeyword: ${options.prefix} is not a boolean`); - // throw new Error('Prefix is not an boolean'); - } - if (localQuery && !this.isBoolean(localQuery)) { - this.logger.error(`Failed FindAssetsByKeyword: ${localQuery} is not a boolean`); - throw new Error('Localquery is not an boolean'); - } - const escapedQuery = this.cleanEscapeCharacter(query); - const limitQuery = this.createLimitQuery(options); - - const publicVisibilityQuery = !localQuery ? 'schema:hasVisibility "public" ;' : ''; - const filterQuery = options.prefix - ? this.createFilterParameter(escapedQuery, this.filtertype.KEYWORDPREFIX) - : this.createFilterParameter(escapedQuery, this.filtertype.KEYWORD); - const issuerFilter = options.issuers - ? this.createFilterParameter(options.issuers, this.filtertype.ISSUERS) - : ''; - const typesFilter = options.types - ? this.createFilterParameter(options.types, this.filtertype.TYPES) - : ''; - - const sparqlQuery = `PREFIX schema: - SELECT ?assertionId ?assetId - WHERE { - ?assertionId schema:hasTimestamp ?latestTimestamp ; - ${publicVisibilityQuery} - schema:hasUALs ?assetId . - { - SELECT ?assetId (MAX(?timestamp) AS ?latestTimestamp) - WHERE { - ?assertionId schema:hasKeywords ?keyword ; - schema:hasIssuer ?issuer ; - schema:hasType ?type ; - schema:hasTimestamp ?timestamp ; - schema:hasUALs ?assetId - ${filterQuery} - ${issuerFilter} - ${typesFilter} - } - GROUP BY ?assetId - ${limitQuery} - } - }`; - const result = await this.execute(sparqlQuery); - return result; - } - - async healthCheck() { - return true; - } - - async executeQuery(query) { - const result = await this.queryEngine.query(query, this.queryContext); - const { data } = await this.queryEngine.resultToString( - result, - 'application/n-quads', - this.queryContext, - ); - let nquads = ''; - for await (const nquad of data) { - nquads += nquad; - } - return nquads; - } - - async execute(query) { - const result = await this.queryEngine.query(query, this.queryContext); - const { data } = await this.queryEngine.resultToString(result); - let response = ''; - for await (const chunk of data) { - response += chunk; - } - return JSON.parse(response); - } - - cleanEscapeCharacter(query) { - return query.replace(/['|[\]\\]/g, '\\$&'); - } - - createFilterParameter(queryParameter, type) { - const queryParam = this.cleanEscapeCharacter(queryParameter); - - switch (type) { - case this.filtertype.KEYWORD: - return `FILTER (lcase(?keyword) = '${queryParam}')`; - case this.filtertype.KEYWORDPREFIX: - return `FILTER contains(lcase(?keyword),'${queryParam}')`; - case this.filtertype.ISSUERS: - return `FILTER (?issuer IN (${JSON.stringify(queryParam).slice(1, -1)}))`; - case this.filtertype.TYPES: - return `FILTER (?type IN (${JSON.stringify(queryParam).slice(1, -1)}))`; - default: - return ''; - } - } - - createLimitQuery(options) { - if (!options.limit) { - return ''; - } - const queryLimit = Number(options.limit); - if (Number.isNaN(queryLimit) || !Number.isInteger(queryLimit)) { - this.logger.error(`Failed creating Limit query: ${options.limit} is not a number`); - throw new Error('Limit is not a number'); - } else if (Number.isInteger(options.limit) && options.limit < 0) { - this.logger.error(`Failed creating Limit query: ${options.limit} is negative number`); - throw new Error('Limit is not a number'); - } - return `LIMIT ${queryLimit}`; - } - - isBoolean(param) { - return typeof param === 'boolean' || ['true', 'false'].includes(param); - } -} - -module.exports = SparqlqueryService; \ No newline at end of file diff --git a/external/web3-blockchain-service.js b/external/web3-blockchain-service.js deleted file mode 100644 index 9bbdca9ef..000000000 --- a/external/web3-blockchain-service.js +++ /dev/null @@ -1,227 +0,0 @@ -const Web3 = require('web3'); -const BigNumber = require('big-number'); -const axios = require('axios'); -const DKGContractAbi = require('../build/contracts/DKGcontract.json').abi; -const UAIRegistryAbi = require('../build/contracts/UAIRegistry.json').abi; -const constants = require('../modules/constants'); - -class Web3BlockchainService { - constructor(config) { - this.config = config; - this.gasStationLink = 'https://gasstation-mumbai.matic.today/v2'; - } - - async initialize(logger) { - this.logger = logger; - this.rpcNumber = 0; - await this.initializeWeb3(); - await this.initializeContracts(); - } - - async initializeWeb3() { - let tries = 0; - let isRpcConnected = false; - while (!isRpcConnected) { - if (tries >= this.config.rpcEndpoints.length) { - throw Error('Blockchain initialisation failed'); - } - - try { - this.web3 = new Web3(this.config.rpcEndpoints[this.rpcNumber]); - isRpcConnected = await this.web3.eth.net.isListening(); - } catch (e) { - this.logger.warn( - `Unable to connect to blockchain rpc : ${ - this.config.rpcEndpoints[this.rpcNumber] - }.`, - ); - tries += 1; - this.rpcNumber = (this.rpcNumber + 1) % this.config.rpcEndpoints.length; - } - } - } - - async initializeContracts() { - this.UAIRegistryContract = new this.web3.eth.Contract( - UAIRegistryAbi, - this.config.hubContractAddress, - ); - const DKGContractAddress = await this.UAIRegistryContract.methods - .getAssertionRegistry() - .call(); - this.DKGContract = new this.web3.eth.Contract(DKGContractAbi, DKGContractAddress); - this.logger.debug( - `Connected to blockchain rpc : ${this.config.rpcEndpoints[this.rpcNumber]}.`, - ); - } - - getPrivateKey() { - return this.config.privateKey; - } - - getPublicKey() { - return this.config.publicKey; - } - - async getGasStationPrice() { - const response = await axios.get(this.gasStationLink).catch((err) => { - this.logger.warn(err); - return undefined; - }); - try { - return Math.round(response.data.standard.maxFee * 1e9); - } catch (e) { - return undefined; - } - } - - async callContractFunction(contractInstance, functionName, args) { - let result; - while (!result) { - try { - result = await contractInstance.methods[functionName](...args).call(); - } catch (error) { - await this.handleError(error, functionName); - } - } - - return result; - } - - async executeContractFunction(contractInstance, functionName, args) { - let result; - while (!result) { - try { - const gasPrice = await this.getGasStationPrice(); - - const gasLimit = await contractInstance.methods[functionName](...args).estimateGas({ - from: this.config.publicKey, - }); - - const encodedABI = contractInstance.methods[functionName](...args).encodeABI(); - const tx = { - from: this.config.publicKey, - to: contractInstance.options.address, - data: encodedABI, - gasPrice: gasPrice || this.web3.utils.toWei('20', 'Gwei'), - gas: gasLimit || this.web3.utils.toWei('900', 'Kwei'), - }; - - const createdTransaction = await this.web3.eth.accounts.signTransaction( - tx, - this.config.privateKey, - ); - result = await this.web3.eth.sendSignedTransaction( - createdTransaction.rawTransaction, - ); - } catch (error) { - await this.handleError(error, functionName); - } - } - - return result; - } - - async createAssertionRecord(stateCommitHash, rootHash, issuer) { - const result = await this.executeContractFunction( - this.DKGContract, - 'createAssertionRecord', - [`0x${stateCommitHash}`, `0x${rootHash}`, issuer, new BigNumber(1), new BigNumber(1)], - ); - return { transactionHash: result.transactionHash, blockchain: this.config.networkId }; - } - - async registerAsset(uai, type, alsoKnownAs, stateCommitHash, rootHash, tokenAmount) { - const result = await this.executeContractFunction( - this.UAIRegistryContract, - 'registerAsset', - [`0x${uai}`, 0, `0x${uai}`, `0x${stateCommitHash}`, `0x${rootHash}`, 1], - ); - return { transactionHash: result.transactionHash, blockchain: this.config.networkId }; - } - - async updateAsset(UAI, newStateCommitHash, rootHash) { - const result = await this.executeContractFunction( - this.UAIRegistryContract, - 'updateAssetState', - [`0x${UAI}`, `0x${newStateCommitHash}`, `0x${rootHash}`], - ); - return { transactionHash: result.transactionHash, blockchain: this.config.networkId }; - } - - async getAssertionProofs(assertionId) { - const issuer = await this.callContractFunction(this.DKGContract, 'getAssertionIssuer', [ - `0x${assertionId}`, - ]); - const rootHash = await this.callContractFunction(this.DKGContract, 'getAssertionRootHash', [ - `0x${assertionId}`, - ]); - return { issuer, rootHash }; - } - - async getAssetProofs(ual) { - const issuer = await this.callContractFunction( - this.UAIRegistryContract, - 'getAssetController', - [`0x${ual}`], - ); - let assertionId = await this.callContractFunction( - this.UAIRegistryContract, - 'getAssetStateCommitHash', - [`0x${ual}`], - ); - if (assertionId === '0x0000000000000000000000000000000000000000000000000000000000000000') { - assertionId = undefined; - } else { - assertionId = assertionId.slice(2); - } - return { issuer, assertionId }; - } - - async healthCheck() { - try { - const gasPrice = await this.web3.eth.getGasPrice(); - if (gasPrice) return true; - } catch (e) { - this.logger.error({ - msg: `Error on checking blockchain. ${e}`, - Event_name: constants.ERROR_TYPE.BLOCKCHAIN_CHECK_ERROR, - }); - return false; - } - return false; - } - - async handleError(error, functionName) { - let isRpcError = false; - try { - await this.web3.eth.net.isListening(); - } catch (rpcError) { - isRpcError = true; - this.logger.warn( - `Unable to execute smart contract function ${functionName} using blockchain rpc : ${ - this.config.rpcEndpoints[this.rpcNumber] - }.`, - ); - await this.restartService(); - } - if (!isRpcError) throw error; - } - - async restartService() { - this.rpcNumber = (this.rpcNumber + 1) % this.config.rpcEndpoints.length; - this.logger.warn( - `There was an issue with current blockchain rpc. Connecting to ${ - this.config.rpcEndpoints[this.rpcNumber] - }`, - ); - await this.initializeWeb3(); - await this.initializeContracts(); - } - - getName() { - return 'Web3 module'; - } -} - -module.exports = Web3BlockchainService; diff --git a/index.js b/index.js index fc0c0cd73..1d8268a7a 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ require('dotenv').config(); const fs = require('fs-extra'); const path = require('path'); @@ -16,7 +17,7 @@ process.env.NODE_ENV = try { if (process.env.NODE_ENV === 'development' && process.argv.length === 3) { const configurationFilename = process.argv[2]; - userConfig = JSON.parse(fs.readFileSync(process.argv[2])); + userConfig = JSON.parse(await fs.promises.readFile(process.argv[2])); userConfig.configFilename = configurationFilename; } } catch (error) { @@ -29,24 +30,25 @@ process.env.NODE_ENV = } catch (e) { console.error(`Error occurred while start ot-node, error message: ${e}. ${e.stack}`); console.error(`Trying to recover from older version`); + if (process.env.NODE_ENV !== 'development') { + const rootPath = path.join(appRootPath.path, '..'); + const oldVersionsDirs = (await fs.promises.readdir(rootPath, { withFileTypes: true })) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name) + .filter((name) => semver.valid(name) && !appRootPath.path.includes(name)); - const rootPath = path.join(appRootPath.path, '..'); - const oldVersionsDirs = (await fs.promises.readdir(rootPath, { withFileTypes: true })) - .filter((dirent) => dirent.isDirectory()) - .map((dirent) => dirent.name) - .filter((name) => semver.valid(name) && !appRootPath.path.includes(name)); + if (oldVersionsDirs.length === 0) { + console.error( + `Failed to start OT-Node, no backup code available. Error message: ${e.message}`, + ); + process.exit(1); + } - if (oldVersionsDirs.length === 0) { - console.error( - `Failed to start OT-Node, no backup code available. Error message: ${e.message}`, - ); - process.exit(1); + const oldVersion = oldVersionsDirs.sort(semver.compare).pop(); + const oldversionPath = path.join(rootPath, oldVersion); + execSync(`ln -sfn ${oldversionPath} ${rootPath}/current`); + await fs.promises.rm(appRootPath.path, { force: true, recursive: true }); } - - const oldVersion = oldVersionsDirs.sort(semver.compare).pop(); - const oldversionPath = path.join(rootPath, oldVersion); - execSync(`ln -sfn ${oldversionPath} ${rootPath}/current`); - await fs.promises.rm(appRootPath.path, { force: true, recursive: true }); process.exit(1); } })(); diff --git a/installer/data/blazegraph.service b/installer/data/blazegraph.service index b935480f0..2cc215a7f 100644 --- a/installer/data/blazegraph.service +++ b/installer/data/blazegraph.service @@ -1,7 +1,7 @@ #/lib/systemd/system/blazegraph.service [Unit] -Description=Blazegraph - OriginTrail V6 Stage 1 Beta Node +Description=OtBlazegraph - OriginTrail V6 Stage 1 Beta Node Documentation=https://github.com/OriginTrail/ot-node After=network.target diff --git a/installer/data/fuseki.service b/installer/data/fuseki.service index 97da93b98..e692969a8 100644 --- a/installer/data/fuseki.service +++ b/installer/data/fuseki.service @@ -1,7 +1,7 @@ #/lib/systemd/system/fuseki.service [Unit] -Description=Fuseki - OriginTrail V6 Stage 1 Beta Node +Description=OtFuseki - OriginTrail V6 Stage 1 Beta Node Documentation=https://github.com/OriginTrail/ot-node After=network.target diff --git a/installer/installer.sh b/installer/installer.sh index d36303724..3d95608df 100755 --- a/installer/installer.sh +++ b/installer/installer.sh @@ -370,6 +370,19 @@ else echo -e "${GREEN}SUCCESS${NC}" fi +echo -n "Adding sql repository password to .env: " + +read -p "Enter sql repository password: " password +OUTPUT=$(echo "REPOSITORY_PASSWORD=$password" > $OTNODE_DIR/.env) +if [[ $? -ne 0 ]]; then + echo -e "${RED}FAILED${NC}" + echo "There was an error adding the env variable." + echo $OUTPUT + exit 1 +else + echo -e "${GREEN}SUCCESS${NC}" +fi + echo -n "Creating a local operational database: " mysql -u root -e "CREATE DATABASE operationaldb /*\!40100 DEFAULT CHARACTER SET utf8 */;" @@ -380,7 +393,7 @@ if [[ $? -ne 0 ]]; then exit 1 fi -mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';" +mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$password';" if [[ $? -ne 0 ]]; then echo -e "${RED}FAILED${NC}" echo "There was an error updating mysql.user set plugin (Step 2 of 2)." @@ -477,7 +490,7 @@ fi echo -n "Adding NODE_ENV=testnet to .env: " -OUTPUT=$(echo "NODE_ENV=testnet" > .env) +OUTPUT=$(echo "NODE_ENV=testnet" >> $OTNODE_DIR/.env) if [[ $? -ne 0 ]]; then echo -e "${RED}FAILED${NC}" echo "There was an error adding the env variable." @@ -487,45 +500,58 @@ else echo -e "${GREEN}SUCCESS${NC}" fi -echo "Creating default noderc config${N1}" - -read -p "Enter the operational wallet address: " NODE_WALLET -echo "Node wallet: $NODE_WALLET" - -read -p "Enter the private key: " NODE_PRIVATE_KEY -echo "Node private key: $NODE_PRIVATE_KEY" - -CONFIG_DIR=$OTNODE_DIR/../ - -cp $OTNODE_DIR/.origintrail_noderc_example $CONFIG_DIR/.origintrail_noderc - -jq --arg newval "$NODE_WALLET" '.blockchain[].publicKey |= $newval' $CONFIG_DIR/.origintrail_noderc >> $CONFIG_DIR/origintrail_noderc_temp -mv $CONFIG_DIR/origintrail_noderc_temp $CONFIG_DIR/.origintrail_noderc - -jq --arg newval "$NODE_PRIVATE_KEY" '.blockchain[].privateKey |= $newval' $CONFIG_DIR/.origintrail_noderc >> $CONFIG_DIR/origintrail_noderc_temp -mv $CONFIG_DIR/origintrail_noderc_temp $CONFIG_DIR/.origintrail_noderc - +tripleStore="" if [[ $DATABASE = "blazegraph" ]]; then - jq '.graphDatabase |= {"implementation": "Blazegraph", "url": "http://localhost:9999/blazegraph"} + .' $CONFIG_DIR/.origintrail_noderc >> $CONFIG_DIR/origintrail_noderc_temp - mv $CONFIG_DIR/origintrail_noderc_temp $CONFIG_DIR/.origintrail_noderc + tripleStore="ot-blazegraph" fi - if [[ $DATABASE = "fuseki" ]]; then - jq '.graphDatabase |= {"name": "node0", "implementation": "Fuseki", "url": "http://localhost:3030"} + .' $CONFIG_DIR/.origintrail_noderc >> $CONFIG_DIR/origintrail_noderc_temp - mv $CONFIG_DIR/origintrail_noderc_temp $CONFIG_DIR/.origintrail_noderc + tripleStore="ot-fuseki" fi -echo -n "Running DB migrations: " - -OUTPUT=$(npx sequelize --config=./config/sequelizeConfig.js db:migrate 2>&1) -if [[ $? -ne 0 ]]; then - echo -e "${RED}FAILED${NC}" - echo "There was an error running the db migrations." - echo $OUTPUT - exit 1 -else - echo -e "${GREEN}SUCCESS${NC}" -fi +CONFIG_DIR=$OTNODE_DIR/.. +touch $CONFIG_DIR/.origintrail_noderc +jq --null-input --arg tripleStore "$tripleStore" '{"logLevel": "trace", "auth": {"ipWhitelist": ["::1", "127.0.0.1"]}, "modules": {"tripleStore":{"defaultImplementation": $tripleStore}}}' > $CONFIG_DIR/.origintrail_noderc + + +#blockchains=("otp" "polygon") +#for ((i = 0; i < ${#blockchains[@]}; ++i)); +#do + # read -p "Do you want to connect your node to blockchain: ${blockchains[$i]} ? [Y]Yes [N]No [E]Exit: " choice +# case "$choice" in + # [Yy]* ) + +# read -p "Enter your substrate operational wallet address: " SUBSTRATE_OPERATIONAL_WALLET +# echo "Substrate operational wallet address: $SUBSTRATE_OPERATIONAL_WALLET" +# +# read -p "Enter your substrate operational wallet private key: " SUBSTRATE_OPERATIONAL_PRIVATE_KEY +# echo "Substrate operational wallet private key: $SUBSTRATE_OPERATIONAL_PRIVATE_KEY" + + read -p "Enter your EVM operational wallet address: " EVM_OPERATIONAL_WALLET + echo "EVM operational wallet address: $EVM_OPERATIONAL_WALLET" + + read -p "Enter your EVM operational wallet private key: " EVM_OPERATIONAL_PRIVATE_KEY + echo "EVM operational wallet private key: $EVM_OPERATIONAL_PRIVATE_KEY" + +# read -p "Enter your substrate management wallet address: " SUBSTRATE_MANAGEMENT_WALLET +# echo "Substrate management wallet address: $SUBSTRATE_MANAGEMENT_WALLET" +# +# read -p "Enter your substrate management wallet private key: " SUBSTRATE_MANAGEMENT_WALLET_PRIVATE_KEY +# echo "Substrate management wallet private key: $SUBSTRATE_MANAGEMENT_WALLET_PRIVATE_KEY" + + read -p "Enter your EVM management wallet address: " EVM_MANAGEMENT_WALLET + echo "EVM management wallet address: $EVM_MANAGEMENT_WALLET" + +# read -p "Enter your EVM management wallet private key: " EVM_MANAGEMENT_PRIVATE_KEY +# echo "EVM management wallet private key: $EVM_MANAGEMENT_PRIVATE_KEY" + + jq --arg blockchain "otp" --arg evmOperationalWallet "$EVM_OPERATIONAL_WALLET" --arg evmOperationalWalletPrivateKey "$EVM_OPERATIONAL_PRIVATE_KEY" --arg evmManagementWallet "$EVM_MANAGEMENT_WALLET" '.modules.blockchain.implementation[$blockchain].config |= { "evmOperationalWalletPublicKey": $evmOperationalWallet, "evmOperationalWalletPrivateKey": $evmOperationalWalletPrivateKey, "evmManagementWalletPublicKey": $evmManagementWallet} + .' $CONFIG_DIR/.origintrail_noderc > $CONFIG_DIR/origintrail_noderc_tmp + mv $CONFIG_DIR/origintrail_noderc_tmp $CONFIG_DIR/.origintrail_noderc + # ;; + # [Nn]* ) ;; + # [Ee]* ) echo "Installer stopped by user"; exit;; + # * ) ((--i));echo "Please make a valid choice and try again.";; + #esac +#done echo -n "Copying otnode service file: " diff --git a/logs/telhub_logs.csv b/logs/telhub_logs.csv deleted file mode 100644 index d4cb90609..000000000 --- a/logs/telhub_logs.csv +++ /dev/null @@ -1 +0,0 @@ -Id_node,Id_operation,Operation_name,Event_name,Event_time,Event_value1,Event_value2,Event_value3,Event_value4 diff --git a/migrations/20211117005500-create-commands.js b/migrations/20211117005500-create-commands.js deleted file mode 100644 index faaeb2c1a..000000000 --- a/migrations/20211117005500-create-commands.js +++ /dev/null @@ -1,76 +0,0 @@ -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('commands', { - id: { - allowNull: false, - primaryKey: true, - type: Sequelize.STRING, - }, - name: { - type: Sequelize.STRING, - allowNull: false, - }, - data: { - type: Sequelize.JSON, - allowNull: false, - }, - sequence: { - type: Sequelize.JSON, - allowNull: true, - }, - ready_at: { - type: Sequelize.INTEGER, - allowNull: false, - }, - delay: { - type: Sequelize.INTEGER, - allowNull: false, - }, - started_at: { - type: Sequelize.INTEGER, - allowNull: true, - }, - deadline_at: { - type: Sequelize.INTEGER, - allowNull: true, - }, - period: { - type: Sequelize.INTEGER, - allowNull: true, - }, - status: { - type: Sequelize.STRING, - allowNull: false, - }, - message: { - type: Sequelize.STRING, - allowNull: true, - }, - parent_id: { - type: Sequelize.STRING, - allowNull: true, - }, - retries: { - type: Sequelize.INTEGER, - allowNull: true, - }, - transactional: { - type: Sequelize.INTEGER, - allowNull: false, - }, - created_at: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.literal('NOW()'), - }, - updated_at: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.literal('NOW()'), - }, - }); - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('commands'); - }, -}; diff --git a/migrations/20211117005504-create-handler_ids.js b/migrations/20211117005504-create-handler_ids.js deleted file mode 100644 index 9f717910f..000000000 --- a/migrations/20211117005504-create-handler_ids.js +++ /dev/null @@ -1,31 +0,0 @@ -module.exports = { - up: (queryInterface, Sequelize) => queryInterface.createTable('handler_ids', { - handler_id: { - allowNull: false, - primaryKey: true, - type: Sequelize.STRING, - }, - data: { - allowNull: true, - type: Sequelize.TEXT, - }, - status: { - allowNull: false, - type: Sequelize.STRING, - }, - timestamp: { - type: Sequelize.BIGINT, - }, - created_at: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.literal('NOW()'), - }, - updated_at: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.literal('NOW()'), - }, - }), - down: (queryInterface, Sequelize) => queryInterface.dropTable('handler_ids'), -}; diff --git a/migrations/20211117005505-update-handler_ids.js b/migrations/20211117005505-update-handler_ids.js deleted file mode 100644 index c8496e81a..000000000 --- a/migrations/20211117005505-update-handler_ids.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - up: (queryInterface, Sequelize) => queryInterface.changeColumn( - 'handler_ids', - 'data', - { - type: Sequelize.TEXT('long'), - allowNull: true, - }, - ), - down: (queryInterface, Sequelize) => queryInterface.changeColumn( - 'handler_ids', - 'data', - { - type: Sequelize.TEXT, - allowNull: true, - }, - ), -}; diff --git a/migrations/20220406102807-update-assertions.js b/migrations/20220406102807-update-assertions.js deleted file mode 100644 index cb867e9ff..000000000 --- a/migrations/20220406102807-update-assertions.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - up: (queryInterface, Sequelize) => { - return Promise.all([queryInterface.addColumn( - 'assertions', - 'triple_store', - { - type: Sequelize.STRING, - allowNull: true, - } - ), - queryInterface.addColumn( - 'assertions', - 'status', - { - type: Sequelize.STRING, - allowNull: true, - } - )])}, - - down: (queryInterface, Sequelize) => { - return Promise.all([queryInterface.removeColumn( - 'assertions', - 'triple_store', - ), - queryInterface.removeColumn( - 'assertions', - 'status', - )])} -}; diff --git a/models/assertion.js b/models/assertion.js deleted file mode 100644 index c25660952..000000000 --- a/models/assertion.js +++ /dev/null @@ -1,34 +0,0 @@ -const { Model } = require('sequelize'); - -module.exports = (sequelize, DataTypes) => { - class assertions extends Model { - static associate(models) { - assertions._models = models; - // define association here - } - } - assertions.init({ - hash: { - type: DataTypes.STRING, - primaryKey: true, - allowNull: false, - }, - owner: DataTypes.STRING, - signature: DataTypes.TEXT, - topics: DataTypes.STRING, - created_at: DataTypes.DATE, - updated_at: DataTypes.DATE, - triple_store: { - type: DataTypes.STRING, - allowNull: true, - }, - status: { - type: DataTypes.STRING, - allowNull: true, - }, - }, { - sequelize, - modelName: 'assertions', - }); - return assertions; -}; diff --git a/models/commands.js b/models/commands.js deleted file mode 100644 index 3ded96ca2..000000000 --- a/models/commands.js +++ /dev/null @@ -1,41 +0,0 @@ -const { Model } = require('sequelize'); -const uuid = require('uuid'); - -module.exports = (sequelize, DataTypes) => { - class commands extends Model { - static associate(models) { - commands._models = models; - // define association here - } - } - commands.init({ - id: { - type: DataTypes.UUID, - primaryKey: true, - defaultValue: () => uuid.v4(), - }, - name: DataTypes.STRING, - data: DataTypes.JSON, - sequence: DataTypes.JSON, - ready_at: DataTypes.INTEGER, - delay: DataTypes.INTEGER, - started_at: DataTypes.INTEGER, - deadline_at: DataTypes.INTEGER, - period: DataTypes.INTEGER, - status: DataTypes.STRING, - message: DataTypes.STRING, - parent_id: DataTypes.UUID, - transactional: DataTypes.BOOLEAN, - retries: { - type: DataTypes.INTEGER, - defaultValue: 0, - }, - created_at: DataTypes.DATE, - updated_at: DataTypes.DATE, - }, { - sequelize, - modelName: 'commands', - timestamps: false, - }); - return commands; -}; diff --git a/models/handler_ids.js b/models/handler_ids.js deleted file mode 100644 index ae3cca011..000000000 --- a/models/handler_ids.js +++ /dev/null @@ -1,23 +0,0 @@ -const { v4: uuidv4 } = require('uuid'); - -module.exports = (sequelize, DataTypes) => { - const handler_ids = sequelize.define('handler_ids', { - handler_id: { - type: DataTypes.UUID, - primaryKey: true, - defaultValue: () => uuidv4(), - }, - data: DataTypes.TEXT, - status: DataTypes.STRING, - timestamp: { - type: DataTypes.BIGINT, - defaultValue: () => Date.now(), - }, - created_at: DataTypes.DATE, - updated_at: DataTypes.DATE, - }, {}); - handler_ids.associate = (models) => { - // associations can be defined here - }; - return handler_ids; -}; diff --git a/models/index.js b/models/index.js deleted file mode 100644 index eb40b315f..000000000 --- a/models/index.js +++ /dev/null @@ -1,49 +0,0 @@ -require('dotenv').config(); - -const fs = require('fs'); -const path = require('path'); -const Sequelize = require('sequelize'); -const mysql = require('mysql2'); - -const basename = path.basename(__filename); -const config = require(`${__dirname}/../config/sequelizeConfig`); -const db = {}; -let sequelize = {}; -const OPERATIONAL_DB_NAME = process.env.OPERATIONAL_DB_NAME || 'operationaldb'; -const OPERATIONAL_DB_PASSWORD = process.env.OPERATIONAL_DB_PASSWORD || ''; - -config.database = OPERATIONAL_DB_NAME; -config.password = OPERATIONAL_DB_PASSWORD; - -const connection = mysql.createConnection({ - host: config.host, - port: config.port, - user: config.username, - password: OPERATIONAL_DB_PASSWORD, -}); -connection.query(`CREATE DATABASE IF NOT EXISTS \`${OPERATIONAL_DB_NAME}\`;`); - -if (config.use_env_variable) { - sequelize = new Sequelize(process.env[config.use_env_variable], config); -} else { - sequelize = new Sequelize(config.database, config.username, config.password, config); -} - -fs - .readdirSync(__dirname) - .filter((file) => (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js')) - .forEach((file) => { - const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes); - db[model.name] = model; - }); - -Object.keys(db).forEach((modelName) => { - if (db[modelName].associate) { - db[modelName].associate(db); - } -}); - -db.sequelize = sequelize; -db.Sequelize = Sequelize; - -module.exports = db; diff --git a/models/jobs.js b/models/jobs.js deleted file mode 100644 index c5c4a3294..000000000 --- a/models/jobs.js +++ /dev/null @@ -1,30 +0,0 @@ -const { Model } = require('sequelize'); -const uuid = require('uuid'); - -module.exports = (sequelize, DataTypes) => { - class jobs extends Model { - static associate(models) { - jobs._models = models; - // define association here - } - } - jobs.init({ - id: { - type: DataTypes.UUID, - primaryKey: true, - defaultValue: () => uuid.v4(), - }, - publisher: DataTypes.STRING, - assertion_hash: DataTypes.STRING, - tx_hash: DataTypes.STRING, - signature: DataTypes.TEXT, - blockchain_id: DataTypes.STRING, - published_to: DataTypes.TEXT, - created_at: DataTypes.DATE, - updated_at: DataTypes.DATE, - }, { - sequelize, - modelName: 'jobs', - }); - return jobs; -}; diff --git a/modules/CalculateHash.js b/modules/CalculateHash.js deleted file mode 100644 index 068101bca..000000000 --- a/modules/CalculateHash.js +++ /dev/null @@ -1,14 +0,0 @@ -const { sha3_256 } = require('js-sha3'); - -/** - * Calculating data hash of dataset using sha3-256. - * Returns data hash value - @param dataset for which is calculated data hash - */ -function calculateDataHash(dataset) { - return `0x${sha3_256(dataset, null, 0)}`; -} - -module.exports = { - calculateDataHash, -}; diff --git a/modules/command/common/cleaner-command.js b/modules/command/common/cleaner-command.js deleted file mode 100644 index 5f443d104..000000000 --- a/modules/command/common/cleaner-command.js +++ /dev/null @@ -1,41 +0,0 @@ -const Command = require('../command'); -const Models = require('../../../models/index'); -const constants = require('../../constants'); - -/** - * Removes commands that have status: completed, failed, expired - */ -class CleanerCommand extends Command { - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - await Models.commands.destroy({ - where: { - status: { [Models.Sequelize.Op.in]: ['COMPLETED', 'FAILED', 'EXPIRED'] }, - started_at: { [Models.Sequelize.Op.lte]: Date.now() }, - }, - }); - return Command.repeat(); - } - - /** - * Builds default command - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'cleanerCommand', - data: { - }, - period: constants.DEFAULT_COMMAND_CLEANUP_TIME_MILLS, - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = CleanerCommand; diff --git a/modules/command/common/handler_ids_cleaner_command.js b/modules/command/common/handler_ids_cleaner_command.js deleted file mode 100644 index 94ef81b7c..000000000 --- a/modules/command/common/handler_ids_cleaner_command.js +++ /dev/null @@ -1,75 +0,0 @@ -const Command = require('../command'); -const Models = require('../../../models/index'); -const constants = require('../../constants'); - -/** - * Removes handler id entries in database and cached files - */ -class HandlerIdsCleanerCommand extends Command { - constructor(ctx) { - super(ctx); - this.logger = ctx.logger; - this.fileService = ctx.fileService; - } - - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - const timeToBeDeleted = Date.now() - constants.HANDLER_IDS_COMMAND_CLEANUP_TIME_MILLS; - Models.handler_ids.findAll({ - where: { - timestamp: { [Models.Sequelize.Op.lt]: timeToBeDeleted }, - status: { [Models.Sequelize.Op.in]: ['COMPLETED', 'FAILED'] }, - }, - }).then((handlersToBeDeleted) => { - handlersToBeDeleted.forEach((handler) => { - const handlerId = handler.handler_id; - Models.handler_ids.destroy({ - where: { - handler_id: handlerId, - }, - }).catch((error) => { - this.logger.warn(`Failed to clean handler ids table: error: ${error.message}`); - }); - const filePath = this.fileService.getHandlerIdDocumentPath(handlerId); - this.fileService.removeFile(filePath).catch((error) => { - this.logger.warn(`Failed to remove handler id cache file: error: ${error.message}`); - }); - }); - }).catch((error) => { - this.logger.warn(`Failed to clean handler ids table: error: ${error.message}`); - }); - - return Command.repeat(); - } - - /** - * Recover system from failure - * @param command - * @param error - */ - async recover(command, error) { - this.logger.warn(`Failed to clean handler ids table: error: ${error.message}`); - return Command.repeat(); - } - - /** - * Builds default command - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'handlerIdsCleanerCommand', - period: constants.HANDLER_IDS_COMMAND_CLEANUP_TIME_MILLS, - data: {}, - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = HandlerIdsCleanerCommand; diff --git a/modules/command/common/keep-alive-command.js b/modules/command/common/keep-alive-command.js deleted file mode 100644 index d2cec71da..000000000 --- a/modules/command/common/keep-alive-command.js +++ /dev/null @@ -1,106 +0,0 @@ -const { v1: uuidv1 } = require('uuid'); -const PeerId = require('peer-id'); -const axios = require('axios'); -const fs = require('fs'); -const Command = require('../command'); -const pjson = require('../../../package.json'); -const Models = require('../../../models/index'); -const constants = require('../../constants'); - -class KeepAliveCommand extends Command { - constructor(ctx) { - super(ctx); - this.logger = ctx.logger; - this.config = ctx.config; - this.validationService = ctx.validationService; - } - - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - const { message } = command.data; - - const Id_operation = uuidv1(); - this.logger.emit({ - msg: message, - Event_name: 'keep_alive', - Operation_name: 'KeepAlive', - Id_operation, - }); - - const signalingMessage = { - nodeVersion: pjson.version, - autoUpdate: { enabled: this.config.modules.autoUpdater.enabled }, - telemetry: { - enabled: this.config.telemetryHub.enabled, - }, - }; - try { - signalingMessage.issuerWallet = this.config.blockchain[0].publicKey; - signalingMessage.kademliaNodeId = this.config.network.peerId._idB58String; - signalingMessage.nodeVersion = pjson.version; - signalingMessage.telemetry.latestAssertions = ( - await Models.assertions.findAll({ - limit: 5, - order: [['created_at', 'DESC']], - attributes: ['hash', 'topics', 'created_at', 'triple_store', 'status'], - }) - ).map((x) => ({ - assertionId: x.dataValues.hash, - keyword: x.dataValues.topics, - publishTimestamp: x.dataValues.created_at, - tripleStore: x.dataValues.triple_store, - status: x.dataValues.status, - })); - } catch (e) { - this.logger.error({ - msg: `An error has occurred with signaling data error: ${e}, stack: ${e.stack}`, - Event_name: constants.ERROR_TYPE.KEEP_ALIVE_ERROR, - }); - } - - const proof = {}; - proof.hash = this.validationService.calculateHash(signalingMessage); - proof.signature = this.validationService.sign(proof.hash); - - signalingMessage.proof = proof; - - const config = { - method: 'post', - url: 'https://signum.origintrail.io:3000/signal', - headers: { - 'Content-Type': 'application/json', - }, - data: JSON.stringify(signalingMessage), - }; - - const that = this; - axios(config).catch((e) => { - that.handleError(uuidv1(), e, constants.ERROR_TYPE.KEEP_ALIVE_ERROR, false); - }); - return Command.repeat(); - } - - /** - * Builds default dcConvertToOtJsonCommand - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'keepAliveCommand', - delay: 0, - data: { - message: 'OT-Node is alive...', - }, - period: 15 * 60 * 1000, - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = KeepAliveCommand; diff --git a/modules/command/common/send-telemetry-command.js b/modules/command/common/send-telemetry-command.js deleted file mode 100644 index ebcb0fd13..000000000 --- a/modules/command/common/send-telemetry-command.js +++ /dev/null @@ -1,113 +0,0 @@ -const Command = require('../command'); -const constants = require('../../constants'); -const Models = require('../../../models/index'); -const {v1: uuidv1} = require("uuid"); - -class SendTelemetryCommand extends Command { - constructor(ctx) { - super(ctx); - this.logger = ctx.logger; - this.config = ctx.config; - this.publishService = ctx.publishService; - this.telemetryHubModuleManager = ctx.telemetryHubModuleManager; - } - - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - if (!this.config.telemetryHub.enabled) { - return Command.empty(); - } - - const operationId = uuidv1(); - - this.telemetryHubModuleManager.aggregateTelemetryData() - .then((jsonld) => { - if (jsonld) { - this.logger.restart(); - this.initializeTelemetryPublish(operationId); - Models.handler_ids.create({ - status: 'PENDING', - }).then((insertedObject) => { - const fileContent = JSON.stringify(jsonld); - const keywords = [`ot-telemetry-${Math.floor(new Date() / (60 * 1000))}`]; - this.logger.emit({ - msg: 'Finished measuring execution of preparing arguments for publishing', - Event_name: 'publish_prep_args_end', - Operation_name: 'publish_prep_args', - Id_operation: operationId, - }); - this.publishService.publish(fileContent, '.json', keywords, 'public', undefined, insertedObject.dataValues.handler_id, operationId, true); - }); - } - }) - .catch((e) => { - this.handleError(e.message); - }); - - return Command.repeat(); - } - - initializeTelemetryPublish(operationId) { - this.logger.emit({ - msg: 'Started measuring execution of publish command', - Event_name: 'publish_start', - Operation_name: 'publish', - Id_operation: operationId, - }); - this.logger.emit({ - msg: 'Started measuring execution of check arguments for publishing', - Event_name: 'publish_init_start', - Operation_name: 'publish_init', - Id_operation: operationId, - }); - this.logger.emit({ - msg: 'Finished measuring execution of check arguments for publishing', - Event_name: 'publish_init_end', - Operation_name: 'publish_init', - Id_operation: operationId, - }); - this.logger.emit({ - msg: 'Started measuring execution of preparing arguments for publishing', - Event_name: 'publish_prep_args_start', - Operation_name: 'publish_prep_args', - Id_operation: operationId, - }); - } - - async recover(command, err) { - await this.handleError(err); - - return Command.retry(); - } - - async handleError(error) { - this.logger.error({ - msg: `Error while sending telemetry data to Telemetry hub: ${error}. ${error.stack}`, - Event_name: constants.ERROR_TYPE.SENDING_TELEMETRY_DATA_ERROR, - }); - } - - /** - * Builds default sendTelemetryCommand - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'sendTelemetryCommand', - delay: 0, - data: { - message: '', - }, - period: 60 * 60 * 1000, // 1 hour - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = SendTelemetryCommand; diff --git a/modules/command/common/test-command.js b/modules/command/common/test-command.js deleted file mode 100644 index 95ed4ab44..000000000 --- a/modules/command/common/test-command.js +++ /dev/null @@ -1,40 +0,0 @@ -const Command = require('../command'); - -class TestCommand extends Command { - constructor(ctx) { - super(ctx); - this.logger = ctx.logger; - } - - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - const { message } = command.data; - await this.logger.info(message); - - return Command.repeat(); - } - - /** - * Builds default dcConvertToOtJsonCommand - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'testCommand', - delay: 0, - data: { - message: 'Node is alive', - }, - period: 5 * 60 * 1000, - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = TestCommand; diff --git a/modules/command/publish/insert-assertion-command.js b/modules/command/publish/insert-assertion-command.js deleted file mode 100644 index 48d03ca3b..000000000 --- a/modules/command/publish/insert-assertion-command.js +++ /dev/null @@ -1,74 +0,0 @@ -const Command = require('../command'); -const constants = require('../../constants'); - -class InsertAssertionCommand extends Command { - constructor(ctx) { - super(ctx); - this.logger = ctx.logger; - this.dataService = ctx.dataService; - this.fileService = ctx.fileService; - } - - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - const { documentPath, handlerId, operationId } = command.data; - - this.logger.emit({ - msg: 'Started measuring execution of storing publishing data into local triple store', - Event_name: 'publish_local_store_start', - Operation_name: 'publish_local_store', - Id_operation: operationId, - }); - const { nquads, assertion } = await this.fileService.loadJsonFromFile(documentPath); - - try { - await this.dataService.insert(nquads.join('\n'), `${constants.DID_PREFIX}:${assertion.id}`); - this.logger.info(`Assertion ${assertion.id} has been successfully inserted`); - this.logger.emit({ - msg: 'Finished measuring execution of storing publishing data into local triple store', - Event_name: 'publish_local_store_end', - Operation_name: 'publish_local_store', - Id_operation: operationId, - }); - } catch (e) { - await this.handleError(handlerId, e, constants.ERROR_TYPE.INSERT_ASSERTION_ERROR, true); - return Command.empty(); - } - - return this.continueSequence(command.data, command.sequence); - } - - /** - * Recover system from failure - * @param command - * @param err - */ - async recover(command, err) { - const { - handlerId, - } = command.data; - await this.handleError(handlerId, err, constants.ERROR_TYPE.INSERT_ASSERTION_ERROR, true); - - return Command.empty(); - } - - /** - * Builds default insertAssertionCommand - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'insertAssertionCommand', - delay: 0, - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = InsertAssertionCommand; diff --git a/modules/command/publish/prepare-assertion-for-publish.js b/modules/command/publish/prepare-assertion-for-publish.js deleted file mode 100644 index 8ae28bfa7..000000000 --- a/modules/command/publish/prepare-assertion-for-publish.js +++ /dev/null @@ -1,171 +0,0 @@ -const Command = require('../command'); -const Models = require('../../../models'); -const { ERROR_TYPE, PUBLISH_METHOD } = require('../../constants'); - -class PrepareAssertionForPublish extends Command { - constructor(ctx) { - super(ctx); - this.logger = ctx.logger; - this.dataService = ctx.dataService; - this.fileService = ctx.fileService; - this.workerPool = ctx.workerPool; - this.validationService = ctx.validationService; - this.workerPool = ctx.workerPool; - } - - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - const { - fileExtension, - keywords, - visibility, - method, - ual, - handlerId, - operationId, - isTelemetry, - } = command.data; - - let { documentPath } = command.data; - const rawAssertion = await this.fileService.readFileOnPath(documentPath); - let assertion; - let nquads; - try { - const result = await this.dataService.canonize(rawAssertion, fileExtension); - assertion = result.assertion; - nquads = result.nquads; - } catch (error) { - this.handleError(handlerId, error, ERROR_TYPE.PREPARE_ASSERTION_ERROR, true); - return Command.empty(); - } - - this.logger.emit({ - msg: 'Finished measuring execution of data canonization', - Event_name: 'publish_canonization_end', - Operation_name: 'publish_canonization', - Id_operation: operationId, - }); - this.logger.emit({ - msg: 'Started measuring execution of generate metadata', - Event_name: 'publish_generate_metadata_start', - Operation_name: 'publish_generate_metadata', - Id_operation: operationId, - }); - assertion.metadata.issuer = this.validationService.getIssuer(); - assertion.metadata.visibility = visibility; - assertion.metadata.keywords = keywords; - assertion.metadata.keywords.sort(); - - if (method === PUBLISH_METHOD.PROVISION) { - const calculatedUal = this.validationService.calculateHash( - assertion.metadata.timestamp + assertion.metadata.type + assertion.metadata.issuer, - ); - assertion.metadata.UALs = [calculatedUal]; - } else if (method === PUBLISH_METHOD.UPDATE) { - assertion.metadata.UALs = [ual]; - } - - assertion.metadata.dataHash = this.validationService.calculateHash(assertion.data); - assertion.metadataHash = this.validationService.calculateHash(assertion.metadata); - assertion.id = this.validationService.calculateHash( - assertion.metadataHash + assertion.metadata.dataHash, - ); - assertion.signature = this.validationService.sign(assertion.id); - - const processedNquads = await this.dataService.appendMetadata(nquads, assertion); - - assertion.rootHash = this.validationService.calculateRootHash(processedNquads); - - if (ual !== undefined) { - this.logger.info(`UAL: ${ual}`); - } - this.logger.info(`Assertion ID: ${assertion.id}`); - this.logger.info(`Assertion metadataHash: ${assertion.metadataHash}`); - this.logger.info(`Assertion dataHash: ${assertion.metadata.dataHash}`); - this.logger.info(`Assertion rootHash: ${assertion.rootHash}`); - this.logger.info(`Assertion signature: ${assertion.signature}`); - this.logger.info(`Assertion length in N-QUADS format: ${nquads.length}`); - this.logger.info(`Keywords: ${keywords}`); - this.logger.emit({ - msg: assertion.id, - Event_name: 'publish_assertion_id', - Operation_name: 'publish_assertion_id', - Id_operation: operationId, - }); - - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - - documentPath = await this.fileService.writeContentsToFile( - handlerIdCachePath, - handlerId, - await this.workerPool.exec('JSONStringify', [ - { - nquads: processedNquads, - assertion, - }, - ]), - ); - - // update handler id data with assertion - const handlerData = { - id: assertion.id, - rootHash: assertion.rootHash, - signature: assertion.signature, - metadata: assertion.metadata, - }; - - await Models.handler_ids.update( - { - data: JSON.stringify(handlerData), - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - - return this.continueSequence( - { - documentPath, - handlerId, - method, - isTelemetry, - operationId, - }, - command.sequence, - ); - } - - /** - * Recover system from failure - * @param command - * @param err - */ - async recover(command, err) { - const { handlerId } = command.data; - await this.handleError(handlerId, err, ERROR_TYPE.PREPARE_ASSERTION_ERROR, true); - - return Command.empty(); - } - - /** - * Builds default prepareAssertionForPublish - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'prepareAssertionForPublish', - delay: 0, - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = PrepareAssertionForPublish; diff --git a/modules/command/publish/send-assertion-command.js b/modules/command/publish/send-assertion-command.js deleted file mode 100644 index 8e262035a..000000000 --- a/modules/command/publish/send-assertion-command.js +++ /dev/null @@ -1,163 +0,0 @@ -const Command = require('../command'); -const Models = require('../../../models/index'); -const constants = require('../../constants'); - -class SendAssertionCommand extends Command { - constructor(ctx) { - super(ctx); - this.logger = ctx.logger; - this.config = ctx.config; - this.networkService = ctx.networkService; - this.publishService = ctx.publishService; - this.fileService = ctx.fileService; - } - - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - const { documentPath, handlerId, operationId } = command.data; - this.logger.emit({ - msg: 'Started measuring execution of replicate data to network', - Event_name: 'publish_replicate_start', - Operation_name: 'publish_replicate', - Id_operation: operationId, - }); - - let { nquads, assertion } = await this.fileService.loadJsonFromFile(documentPath); - - if (!assertion.metadata.visibility) { - nquads = nquads.filter((x) => x.startsWith(`<${constants.DID_PREFIX}:`)); - } - - let nodes = new Set(); - for (const keyword of assertion.metadata.keywords.concat(assertion.id)) { - this.logger.info( - `Searching for closest ${this.config.replicationFactor} node(s) for keyword ${keyword}`, - ); - const foundNodes = await this.networkService.findNodes( - keyword, - constants.NETWORK_PROTOCOLS.STORE, - this.config.replicationFactor, - ); - if (foundNodes.length < this.config.replicationFactor) { - this.logger.warn( - `Found only ${foundNodes.length} node(s) for keyword ${keyword}`, - ); - } - for (const node of foundNodes) { - nodes.add(node); - } - } - nodes = [...nodes]; - - let busyResponses = 0; - let failedResponses = 0; - const storePromises = nodes.map((node) => this.publishService - .store({ id: assertion.id, nquads }, node) - .then((response) => { - if (!response) { - this.logger.error({ - msg: `Error while sending data with assertion id ${assertion.id} to node ${node._idB58String} - receiving node didn't store the assertion.`, - Operation_name: 'Error', - Event_name: constants.ERROR_TYPE.SEND_ASSERTION_ERROR, - Id_operation: handlerId, - }); - failedResponses += 1; - } else if (response === constants.NETWORK_RESPONSES.BUSY) { - this.logger.error({ - msg: `Error while sending data with assertion id ${assertion.id} to node ${node._idB58String} - receiving node is too busy to store the assertion.`, - Operation_name: 'Error', - Event_name: constants.ERROR_TYPE.SEND_ASSERTION_ERROR_BUSY, - Id_operation: handlerId, - }); - busyResponses += 1; - } - return response; - }).catch((e) => { - this.handleError( - handlerId, - e, - `Error while sending data with assertion id ${assertion.id} to node ${node._idB58String}. Error message: ${e.message}. ${e.stack}`, - ); - })); - - await Promise.all(storePromises); - const maxFailResponses = Math.round((1 - constants.STORE_MIN_SUCCESS_RATE) * nodes.length); - const status = (failedResponses + busyResponses) <= maxFailResponses ? 'COMPLETED' : 'FAILED'; - await Models.handler_ids.update( - { - status, - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - - if (command.data.isTelemetry) { - await Models.assertions.create({ - hash: assertion.id, - topics: JSON.stringify(assertion.metadata.keywords[0]), - created_at: assertion.metadata.timestamp, - triple_store: this.config.graphDatabase.implementation, - status, - }); - } - - if (status === 'COMPLETED') { - this.logger.emit({ - msg: 'Finished measuring execution of replicate data to network', - Event_name: 'publish_replicate_end', - Operation_name: 'publish_replicate', - Id_operation: operationId, - }); - this.logger.emit({ - msg: 'Finished measuring execution of publish command', - Event_name: 'publish_end', - Operation_name: 'publish', - Id_operation: operationId, - }); - } - - return this.continueSequence(command.data, command.sequence); - } - - /** - * Recover system from failure - * @param command - * @param err - */ - async recover(command, err) { - return Command.empty(); - } - - handleError(handlerId, error, msg) { - this.logger.error({ - msg, - Operation_name: 'Error', - Event_name: constants.ERROR_TYPE.SEND_ASSERTION_ERROR, - Event_value1: error.message, - Id_operation: handlerId, - }); - } - - /** - * Builds default sendAssertionCommand - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'sendAssertionCommand', - delay: 0, - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = SendAssertionCommand; diff --git a/modules/command/publish/submit-proofs-command.js b/modules/command/publish/submit-proofs-command.js deleted file mode 100644 index 0231cc7e3..000000000 --- a/modules/command/publish/submit-proofs-command.js +++ /dev/null @@ -1,141 +0,0 @@ -const sortedStringify = require('json-stable-stringify'); -const Command = require('../command'); -const constants = require('../../constants'); - -class SubmitProofsCommand extends Command { - constructor(ctx) { - super(ctx); - this.logger = ctx.logger; - this.blockchainService = ctx.blockchainService; - this.dataService = ctx.dataService; - this.fileService = ctx.fileService; - this.workerPool = ctx.workerPool; - - this.blockchainQueue = ctx.blockchainQueue.promise(this, this.sendTransaction, 1); - } - - /** - * Executes command and produces one or more events - * @param command - */ - async execute(command) { - const { - documentPath, handlerId, method, isTelemetry, operationId, - } = command.data; - - try { - this.logger.emit({ - msg: 'Started measuring execution of submitting proofs to blockchain', - Event_name: 'publish_blockchain_start', - Operation_name: 'publish_blockchain', - Id_operation: operationId, - }); - let { nquads, assertion } = await this.fileService.loadJsonFromFile(documentPath); - - this.logger.info('Sending transaction to the blockchain'); - let result; - if (isTelemetry) { - result = await this.blockchainQueue.unshift({ method, assertion }); - } else { - if (this.blockchainQueue.length() > constants.BLOCKCHAIN_QUEUE_LIMIT) { - throw new Error('Blockchain queue is full'); - } - result = await this.blockchainQueue.push({ method, assertion }); - } - - const { transactionHash, blockchain } = result; - this.logger.info(`Transaction hash is ${transactionHash} on ${blockchain}`); - - assertion.blockchain = { - name: blockchain, - transactionHash, - }; - - nquads = await this.dataService.appendBlockchainMetadata(nquads, assertion); - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - - await this.fileService - .writeContentsToFile(handlerIdCachePath, handlerId, sortedStringify({ - nquads, assertion, - })); - this.logger.emit({ - msg: 'Finished measuring execution of submitting proofs to blockchain', - Event_name: 'publish_blockchain_end', - Operation_name: 'publish_blockchain', - Id_operation: operationId, - }); - } catch (e) { - await this.handleError(handlerId, e, constants.ERROR_TYPE.SUBMIT_PROOFS_ERROR, true); - return Command.empty(); - } - - return this.continueSequence(command.data, command.sequence); - } - - async sendTransaction(args) { - const { assertion, method } = args; - let result; - switch (method) { - case constants.PUBLISH_METHOD.PUBLISH: - result = await this.blockchainService.createAssertionRecord( - assertion.id, - assertion.rootHash, - assertion.metadata.issuer, - ); - break; - case constants.PUBLISH_METHOD.PROVISION: - result = await this.blockchainService.registerAsset( - assertion.metadata.UALs[0], - assertion.metadata.type, - assertion.metadata.UALs[0], - assertion.id, - assertion.rootHash, - 1, - ); - break; - case constants.PUBLISH_METHOD.UPDATE: - result = await this.blockchainService.updateAsset( - assertion.metadata.UALs[0], - assertion.id, - assertion.rootHash, - ); - break; - default: - break; - } - - return result; - } - - /** - * Recover system from failure - * @param command - * @param err - */ - async recover(command, err) { - const { - handlerId, - } = command.data; - - await this.handleError(handlerId, err, constants.ERROR_TYPE.SUBMIT_PROOFS_ERROR, true); - - return Command.empty(); - } - - /** - * Builds default submitProofsCommand - * @param map - * @returns {{add, data: *, delay: *, deadline: *}} - */ - default(map) { - const command = { - name: 'submitProofsCommand', - delay: 0, - transactional: false, - }; - Object.assign(command, map); - return command; - } -} - -module.exports = SubmitProofsCommand; diff --git a/modules/constants.js b/modules/constants.js deleted file mode 100644 index e01e53fb1..000000000 --- a/modules/constants.js +++ /dev/null @@ -1,287 +0,0 @@ -exports.GS1EPCIS = 'gs1-epcis'; -exports.ERC721 = 'erc721'; -exports.OTTELEMETRY = 'ottelemetry'; -exports.MERKLE_TREE = 'Merkle Tree'; -exports.BASIC = 'Basic'; -exports.DID = 'DID'; - -/** - * @constant {number} MAX_FILE_SIZE - * - Max file size for publish - */ -exports.MAX_FILE_SIZE = 2621440; - -/** - * @constant {object} SERVICE_API_RATE_LIMIT - * - Express rate limit configuration constants - */ -exports.SERVICE_API_RATE_LIMIT = { - TIME_WINDOW_MILLS: 1 * 60 * 1000, - MAX_NUMBER: 10, -}; - -/** - * @constant {object} SERVICE_API_SLOW_DOWN - * - Express slow down configuration constants - */ -exports.SERVICE_API_SLOW_DOWN = { - TIME_WINDOW_MILLS: 1 * 60 * 1000, - DELAY_AFTER_SECONDS: 5, - DELAY_MILLS: 3 * 1000, -}; - -/** - * @constant {object} NETWORK_API_RATE_LIMIT - * - Network (Libp2p) rate limiter configuration constants - */ -exports.NETWORK_API_RATE_LIMIT = { - TIME_WINDOW_MILLS: 1 * 60 * 1000, - MAX_NUMBER: this.SERVICE_API_RATE_LIMIT.MAX_NUMBER, -}; - -/** - * @constant {object} NETWORK_API_SPAM_DETECTION - * - Network (Libp2p) spam detection rate limiter configuration constants - */ -exports.NETWORK_API_SPAM_DETECTION = { - TIME_WINDOW_MILLS: 1 * 60 * 1000, - MAX_NUMBER: 20, -}; - -/** - * @constant {object} NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES - * - Network (Libp2p) black list time window in minutes - */ -exports.NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES = 60; - -/** - * @constant {number} DID_PREFIX - * - DID prefix for graph database - */ -exports.DID_PREFIX = 'did:dkg'; - -/** - * @constant {number} DEFAULT_COMMAND_CLEANUP_TIME_MILLS - Command cleanup interval time - */ -exports.DEFAULT_COMMAND_CLEANUP_TIME_MILLS = 4 * 24 * 60 * 60 * 1000; - -/** - * @constant {number} HANDLER_IDS_COMMAND_CLEANUP_TIME_MILLS - - * Export command cleanup interval time 24h - */ -exports.HANDLER_IDS_COMMAND_CLEANUP_TIME_MILLS = 24 * 60 * 60 * 1000; - -/** - * @constant {Array} PERMANENT_COMMANDS - List of all permanent commands - */ -exports.PERMANENT_COMMANDS = [ - 'otnodeUpdateCommand', - 'sendTelemetryCommand', - 'cleanerCommand', - 'handlerIdsCleanerCommand', - 'keepAliveCommand', -]; - -/** - * @constant {number} MAX_COMMAND_DELAY_IN_MILLS - Maximum delay for commands - */ -exports.MAX_COMMAND_DELAY_IN_MILLS = 14400 * 60 * 1000; // 10 days - -/** - * @constant {number} DEFAULT_COMMAND_REPEAT_IN_MILLS - Default repeat interval - */ -exports.DEFAULT_COMMAND_REPEAT_INTERVAL_IN_MILLS = 5000; // 5 seconds - -/** - * @constant {number} DEFAULT_COMMAND_DELAY_IN_MILLS - Delay for default commands - */ -exports.DEFAULT_COMMAND_DELAY_IN_MILLS = 60 * 1000; // 60 seconds - -/** - * @constant {number} TRIPLE_STORE_CONNECT_MAX_RETRIES - * - Maximum retries for connecting to triple store - */ -exports.TRIPLE_STORE_CONNECT_MAX_RETRIES = 10; - -/** - * @constant {number} TRIPLE_STORE_CONNECT_RETRY_FREQUENCY - * - Wait interval between retries for connecting to triple store - */ -exports.TRIPLE_STORE_CONNECT_RETRY_FREQUENCY = 10; // 10 seconds - -/** - * @constant {number} TRIPLE_STORE_QUEUE_LIMIT - * - Triple store queue limit - */ -exports.TRIPLE_STORE_QUEUE_LIMIT = 5000; - -/** - * @constant {number} BLOCKCHAIN_QUEUE_LIMIT - * - Blockchain queue limit - */ -exports.BLOCKCHAIN_QUEUE_LIMIT = 25000; - -/** - * @constant {number} RESOLVE_MAX_TIME_MILLIS - * - Maximum time for resolve operation - */ -exports.RESOLVE_MAX_TIME_MILLIS = 15 * 1000; - -/** - * @constant {number} STORE_MAX_RETRIES - * - Maximum number of retries - */ -exports.STORE_MAX_RETRIES = 3; - -/** - * @constant {number} STORE_BUSY_REPEAT_INTERVAL_IN_MILLS - * - Wait interval between retries for sending store requests - */ -exports.STORE_BUSY_REPEAT_INTERVAL_IN_MILLS = 4 * 1000; - -/** - * @constant {number} BUSYNESS_LIMITS - * - Max number of operations in triple store queue that indicate busyness - */ -exports.BUSYNESS_LIMITS = { - HANDLE_STORE: 20, - HANDLE_RESOLVE: 20, - HANDLE_SEARCH_ASSERTIONS: 20, - HANDLE_SEARCH_ENTITIES: 15, -}; - -/** - * @constant {number} STORE_MIN_SUCCESS_RATE - * - Min rate of successful responses from store queries for publish to be maked as COMPLETED - */ -exports.STORE_MIN_SUCCESS_RATE = 0.8; - -/** - * @constant {object} TRIPLE_STORE_IMPLEMENTATION - - * Names of available triple store implementations - */ -exports.TRIPLE_STORE_IMPLEMENTATION = { - BLAZEGRAPH: 'Blazegraph', - GRAPHDB: 'GraphDB', - FUSEKI: 'Fuseki', -}; - -/** - * @constant {number} NETWORK_HANDLER_TIMEOUT - - * Timeout for all handler methods for network requests - */ -exports.NETWORK_HANDLER_TIMEOUT = 120e3; - -/** - * @constant {object} NETWORK_RESPONSES - - * Types of known network responses - */ -exports.NETWORK_RESPONSES = { - TRUE: true, - FALSE: false, - ACK: 'ack', - BUSY: 'busy', - BLOCKED: 'blocked', - ERROR: 'error', -}; - -/** - * @constant {object} STRINGIFIED_NETWORK_RESPONSES - - * Stringified types of known network responses - */ -exports.STRINGIFIED_NETWORK_RESPONSES = { - ack: '"ack"', - busy: '"busy"', - blocked: '"blocked"', - error: '"error"', -}; - -/** - * @constant {object} NETWORK_PROTOCOLS - - * Network protocols - */ -exports.NETWORK_PROTOCOLS = { - STORE: '/store/1.0.1', - RESOLVE: '/resolve/1.0.1', - SEARCH: '/search/1.0.1', - SEARCH_RESULT: '/search/1.0.1/result', - SEARCH_ASSERTIONS: '/search/assertions/1.0.1', - SEARCH_ASSERTIONS_RESULT: '/search/assertions/1.0.1/result', -}; - -/** - * @constant {object} SERVICE_API_ROUTES - * Service api routes - */ -exports.SERVICE_API_ROUTES = { - PUBLISH: '/publish', - PROVISION: '/provision', - UPDATE: '/update', - RESOLVE: '/resolve', - SEARCH: '/entities::search', - SEARCH_ASSERTIONS: '/assertions::search', - QUERY: '/query', - PROOFS: '/proofs::get', - OPERATION_RESULT: '/:operation/result/:handler_id', - INFO: '/info', -}; - -/** - * @constant {object} ERROR_TYPE - - * Types of errors supported - */ -exports.ERROR_TYPE = { - INSERT_ASSERTION_ERROR: 'InsertAssertionError', - PREPARE_ASSERTION_ERROR: 'PrepareAssertionError', - SUBMIT_PROOFS_ERROR: 'SubmitProofsError', - SEND_ASSERTION_ERROR: 'SendAssertionError', - SEND_ASSERTION_ERROR_BUSY: 'SendAssertionErrorBusy', - SENDING_TELEMETRY_DATA_ERROR: 'SendingDataTelemetryError', - CHECKING_UPDATE_ERROR: 'CheckingUpdateError', - API_ERROR_400: 'ApiError400', - API_ERROR_500: 'ApiError500', - PUBLISH_ROUTE_ERROR: 'PublishRouteError', - RESOLVE_ROUTE_ERROR: 'ResolveRouteError', - SEARCH_ASSERTIONS_ROUTE_ERROR: 'SearchAssertionsRouteError', - SEARCH_ENTITIES_ROUTE_ERROR: 'SearchEntitiesRouteError', - QUERY_ROUTE_ERROR: 'QueryRouteError', - PROOFS_ROUTE_ERROR: 'ProofsRouteError', - RESULTS_ROUTE_ERROR: 'ResultsRouteError', - NODE_INFO_ROUTE_ERROR: 'NodeInfoRouteError', - HANDLE_STORE_ERROR: 'HandleStoreError', - EXTRACT_METADATA_ERROR: 'ExtractMetadataError', - TRIPLE_STORE_UNAVAILABLE_ERROR: 'TripleStoreUnavailableError', - TRIPLE_STORE_INSERT_ERROR: 'TripleStoreInsertError', - LIBP2P_HANDLE_MSG_ERROR: 'Libp2pHandleMessageError', - VERIFY_ASSERTION_ERROR: 'VerifyAssertionError', - BLOCKCHAIN_CHECK_ERROR: 'BlockchainCheckError', - COMMAND_EXECUTOR_ERROR: 'CommandExecutorError', - FAILED_COMMAND_ERROR: 'FailedCommandError', - MODULE_INITIALIZATION_ERROR: 'ModuleInitializationError', - UPDATE_INITIALIZATION_ERROR: 'UpdateInitializationError', - DATA_MODULE_INITIALIZATION_ERROR: 'DataModuleInitializationError', - OPERATIONALDB_MODULE_INITIALIZATION_ERROR: 'OperationalDbModuleInitializationError', - NETWORK_INITIALIZATION_ERROR: 'NetworkInitializationError', - VALIDATION_INITIALIZATION_ERROR: 'ValidationInitializationError', - BLOCKCHAIN_INITIALIZATION_ERROR: 'BlockchainInitializationError', - COMMAND_EXECUTOR_INITIALIZATION_ERROR: 'CommandExecutorInitializationError', - RPC_INITIALIZATION_ERROR: 'RpcInitializationError', - KEEP_ALIVE_ERROR: 'KeepAliveError', -}; -/** - * @constant {object} HANDLER_ID_STATUS - - * Possible statuses for handler id - */ -exports.HANDLER_ID_STATUS = { - PENDING: 'PENDING', - FAILED: 'FAILED', -}; -/** - * @constant {object} PUBLISH_METHOD - - * Possible methods for publish - */ -exports.PUBLISH_METHOD = { - PUBLISH: 'PUBLISH', - PROVISION: 'PROVISION', - UPDATE: 'UPDATE', -}; diff --git a/modules/controller/rpc-controller.js b/modules/controller/rpc-controller.js deleted file mode 100644 index 2a7ba1b81..000000000 --- a/modules/controller/rpc-controller.js +++ /dev/null @@ -1,1122 +0,0 @@ -const express = require('express'); -const fileUpload = require('express-fileupload'); -const ipfilter = require('express-ipfilter').IpFilter; -const fs = require('fs'); -const https = require('https'); -const { IpDeniedError } = require('express-ipfilter'); -const path = require('path'); -const { v1: uuidv1 } = require('uuid'); -const sortedStringify = require('json-stable-stringify'); -const validator = require('validator'); -const rateLimit = require('express-rate-limit'); -const slowDown = require('express-slow-down'); -const Models = require('../../models/index'); -const constants = require('../constants'); -const pjson = require('../../package.json'); -const Utilities = require('../utilities'); - -class RpcController { - constructor(ctx) { - this.config = ctx.config; - this.publishService = ctx.publishService; - this.queryService = ctx.queryService; - this.networkService = ctx.networkService; - this.validationService = ctx.validationService; - this.blockchainService = ctx.blockchainService; - this.dataService = ctx.dataService; - this.logger = ctx.logger; - this.commandExecutor = ctx.commandExecutor; - this.fileService = ctx.fileService; - this.workerPool = ctx.workerPool; - this.publishController = ctx.publishController; - this.app = express(); - - this.enableSSL(); - - this.app.use( - fileUpload({ - createParentPath: true, - }), - ); - } - - async initialize() { - // TODO add body-parser middleware - this.initializeNetworkApi(); - - this.initializeAuthenticationMiddleware(); - this.initializeRateLimitMiddleware(); - this.initializeSlowDownMiddleWare(); - this.initializeServiceApi(); - await this.initializeErrorMiddleware(); - if (this.sslEnabled) { - await this.httpsServer.listen(this.config.rpcPort); - } else { - await this.app.listen(this.config.rpcPort); - } - } - - initializeAuthenticationMiddleware() { - const formattedWhitelist = []; - const ipv6prefix = '::ffff:'; - for (let i = 0; i < this.config.ipWhitelist.length; i += 1) { - if (!this.config.ipWhitelist[i].includes(':')) { - formattedWhitelist.push(ipv6prefix.concat(this.config.ipWhitelist[i])); - } else { - formattedWhitelist.push(this.config.ipWhitelist[i]); - } - } - - this.app.use((req, res, next) => { - res.header('Access-Control-Allow-Origin', '*'); - res.header( - 'Access-Control-Allow-Headers', - 'Origin, X-Requested-With, Content-Type, Accept', - ); - next(); - }); - - this.app.use( - ipfilter(formattedWhitelist, { - mode: 'allow', - log: false, - }), - ); - - this.app.use((error, req, res, next) => { - if (error instanceof IpDeniedError) { - return res.status(401).send('Access denied'); - } - return next(); - }); - - this.app.use((req, res, next) => { - this.logger.info(`${req.method}: ${req.url} request received`); - return next(); - }); - } - - async initializeErrorMiddleware() { - await this.app.use((error, req, res, next) => { - let code; - let message; - if (error && error.code) { - switch (error.code) { - case 400: - code = 400; - message = `Bad request. ${error.message}`; - break; - default: - return next(error); - } - this.logger.error({ msg: message, Event_name: constants.ERROR_TYPE.API_ERROR_400 }); - return res.status(code).send(message); - } - return next(error); - }); - - this.app.use((error, req, res) => { - this.logger.error({ msg: error, Event_name: constants.ERROR_TYPE.API_ERROR_500 }); - return res.status(500).send(error); - }); - } - - enableSSL() { - this.sslEnabled = - fs.existsSync('/root/certs/privkey.pem') && fs.existsSync('/root/certs/fullchain.pem'); - - if (this.sslEnabled) { - this.httpsServer = https.createServer( - { - key: fs.readFileSync('/root/certs/privkey.pem'), - cert: fs.readFileSync('/root/certs/fullchain.pem'), - }, - this.app, - ); - } - } - - initializeRateLimitMiddleware() { - this.rateLimitMiddleware = rateLimit({ - windowMs: constants.SERVICE_API_RATE_LIMIT.TIME_WINDOW_MILLS, - max: constants.SERVICE_API_RATE_LIMIT.MAX_NUMBER, - message: `Too many requests sent, maximum number of requests per minute is ${constants.SERVICE_API_RATE_LIMIT.MAX_NUMBER}`, - standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers - legacyHeaders: false, // Disable the `X-RateLimit-*` headers - }); - } - - initializeSlowDownMiddleWare() { - this.slowDownMiddleware = slowDown({ - windowMs: constants.SERVICE_API_SLOW_DOWN.TIME_WINDOW_MILLS, - delayAfter: constants.SERVICE_API_SLOW_DOWN.DELAY_AFTER_SECONDS, - delayMs: constants.SERVICE_API_SLOW_DOWN.DELAY_MILLS, - }); - } - - initializeNetworkApi() { - this.logger.info(`Network API module enabled on port ${this.config.network.port}`); - - this.networkService.handleMessage(constants.NETWORK_PROTOCOLS.STORE, (result) => - this.publishService.handleStore(result), - ); - - this.networkService.handleMessage(constants.NETWORK_PROTOCOLS.RESOLVE, (result) => - this.queryService.handleResolve(result), - ); - - this.networkService.handleMessage( - constants.NETWORK_PROTOCOLS.SEARCH, - (result) => this.queryService.handleSearch(result), - { - async: true, - timeout: constants.NETWORK_HANDLER_TIMEOUT, - }, - ); - - this.networkService.handleMessage(constants.NETWORK_PROTOCOLS.SEARCH_RESULT, (result) => - this.queryService.handleSearchResult(result), - ); - - this.networkService.handleMessage( - constants.NETWORK_PROTOCOLS.SEARCH_ASSERTIONS, - (result) => this.queryService.handleSearchAssertions(result), - { - async: true, - timeout: constants.NETWORK_HANDLER_TIMEOUT, - }, - ); - - this.networkService.handleMessage( - constants.NETWORK_PROTOCOLS.SEARCH_ASSERTIONS_RESULT, - (result) => this.queryService.handleSearchAssertionsResult(result), - ); - - // this.networkService.handleMessage('/query', (result) - // => this.queryService.handleQuery(result)); - } - - initializeServiceApi() { - this.logger.info( - `Service API module enabled, server running on port ${this.config.rpcPort}`, - ); - - this.app.post( - constants.SERVICE_API_ROUTES.PUBLISH, - this.rateLimitMiddleware, - this.slowDownMiddleware, - async (req, res) => { - await this.publishController.handleHttpApiPublishRequest(req, res); - }, - ); - - this.app.post( - constants.SERVICE_API_ROUTES.PROVISION, - this.rateLimitMiddleware, - this.slowDownMiddleware, - async (req, res, next) => { - await this.publishController.handleHttpApiProvisionRequest(req, res); - }, - ); - - this.app.post( - constants.SERVICE_API_ROUTES.UPDATE, - this.rateLimitMiddleware, - this.slowDownMiddleware, - async (req, res, next) => { - if (!req.body.ual) { - return next({ - code: 400, - message: 'UAL must be a string.', - }); - } - await this.publishController.handleHttpApiUpdateRequest(req, res); - }, - ); - - this.app.get( - constants.SERVICE_API_ROUTES.RESOLVE, - this.rateLimitMiddleware, - this.slowDownMiddleware, - async (req, res, next) => { - const operationId = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of resolve command', - Event_name: 'resolve_start', - Operation_name: 'resolve', - Id_operation: operationId, - }); - - this.logger.emit({ - msg: 'Started measuring execution of resolve init', - Event_name: 'resolve_init_start', - Operation_name: 'resolve_init', - Id_operation: operationId, - }); - - if (!req.query.ids) { - return next({ code: 400, message: 'Param ids is required.' }); - } - - if (req.query.load === undefined) { - req.query.load = false; - } - - this.logger.emit({ - msg: 'Finished measuring execution of resolve init', - Event_name: 'resolve_init_end', - Operation_name: 'resolve_init', - Id_operation: operationId, - }); - - let handlerId = null; - try { - const inserted_object = await Models.handler_ids.create({ - status: 'PENDING', - }); - handlerId = inserted_object.dataValues.handler_id; - res.status(202).send({ - handler_id: handlerId, - }); - - let ids = [req.query.ids]; - if (req.query.ids instanceof Array) { - ids = [...new Set(req.query.ids)]; - } - this.logger.info(`Resolve for ${ids} with handler id ${handlerId} initiated.`); - const response = []; - - for (let id of ids) { - let isAsset = false; - const { assertionId } = await this.blockchainService.getAssetProofs(id); - if (assertionId) { - isAsset = true; - id = assertionId; - } - this.logger.emit({ - msg: id, - Event_name: 'resolve_assertion_id', - Operation_name: 'resolve_assertion_id', - Id_operation: operationId, - }); - this.logger.emit({ - msg: 'Started measuring execution of resolve local', - Event_name: 'resolve_local_start', - Operation_name: 'resolve_local', - Id_operation: operationId, - }); - - const nquads = await this.dataService.resolve(id, true); - - this.logger.emit({ - msg: 'Finished measuring execution of resolve local', - Event_name: 'resolve_local_end', - Operation_name: 'resolve_local', - Id_operation: operationId, - }); - - if (nquads) { - this.logger.emit({ - msg: 'Started measuring execution of create assertion from nquads', - Event_name: 'resolve_create_assertion_from_nquads_start', - Operation_name: 'resolve_create_assertion_from_nquads', - Id_operation: operationId, - }); - - const assertion = await this.dataService.createAssertion(nquads); - - this.logger.emit({ - msg: 'Finished measuring execution of create assertion from nquads', - Event_name: 'resolve_create_assertion_from_nquads_end', - Operation_name: 'resolve_create_assertion_from_nquads', - Id_operation: operationId, - }); - - assertion.jsonld.metadata = JSON.parse( - sortedStringify(assertion.jsonld.metadata), - ); - assertion.jsonld.data = JSON.parse( - sortedStringify( - await this.dataService.fromNQuads( - assertion.jsonld.data, - assertion.jsonld.metadata.type, - ), - ), - ); - response.push( - isAsset - ? { - type: 'asset', - id: assertion.jsonld.metadata.UALs[0], - result: { - assertions: await this.dataService.assertionsByAsset( - assertion.jsonld.metadata.UALs[0], - ), - metadata: { - type: assertion.jsonld.metadata.type, - issuer: assertion.jsonld.metadata.issuer, - latestState: assertion.jsonld.metadata.timestamp, - }, - data: assertion.jsonld.data, - }, - } - : { - type: 'assertion', - id, - assertion: assertion.jsonld, - }, - ); - } else { - this.logger.info( - `Searching for closest ${this.config.replicationFactor} node(s) for keyword ${id}`, - ); - const nodes = await this.networkService.findNodes( - id, - constants.NETWORK_PROTOCOLS.RESOLVE, - this.config.replicationFactor, - ); - if (nodes.length < this.config.replicationFactor) { - this.logger.warn( - `Found only ${nodes.length} node(s) for keyword ${id}`, - ); - } - for (const node of nodes) { - try { - const assertion = await this.queryService.resolve( - id, - req.query.load, - isAsset, - node, - operationId, - ); - if (assertion) { - assertion.jsonld.metadata = JSON.parse( - sortedStringify(assertion.jsonld.metadata), - ); - assertion.jsonld.data = JSON.parse( - sortedStringify( - await this.dataService.fromNQuads( - assertion.jsonld.data, - assertion.jsonld.metadata.type, - ), - ), - ); - response.push( - isAsset - ? { - type: 'asset', - id: assertion.jsonld.metadata.UALs[0], - result: { - metadata: { - type: assertion.jsonld.metadata.type, - issuer: assertion.jsonld.metadata - .issuer, - latestState: - assertion.jsonld.metadata - .timestamp, - }, - data: assertion.jsonld.data, - }, - } - : { - type: 'assertion', - id, - assertion: assertion.jsonld, - }, - ); - break; - } - } catch (e) { - this.logger.error({ - msg: `Error while resolving data from another node: ${e.message}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.RESOLVE_ROUTE_ERROR, - Event_value1: e.message, - Id_operation: operationId, - }); - } - } - } - } - - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - - this.logger.emit({ - msg: 'Started measuring execution of resolve save assertion', - Event_name: 'resolve_save_assertion_start', - Operation_name: 'resolve_save_assertion', - Id_operation: operationId, - }); - - await this.fileService.writeContentsToFile( - handlerIdCachePath, - handlerId, - JSON.stringify(response), - ); - - this.logger.emit({ - msg: 'Finished measuring execution of resolve save assertion', - Event_name: 'resolve_save_assertion_end', - Operation_name: 'resolve_save_assertion', - Id_operation: operationId, - }); - - await Models.handler_ids.update( - { - status: 'COMPLETED', - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - - this.logger.emit({ - msg: 'Finished measuring execution of resolve command', - Event_name: 'resolve_end', - Operation_name: 'resolve', - Id_operation: operationId, - }); - } catch (e) { - this.logger.error({ - msg: `Unexpected error at resolve route: ${e.message}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.RESOLVE_ROUTE_ERROR, - Event_value1: e.message, - Id_operation: operationId, - }); - this.updateFailedHandlerId(handlerId, e, next); - } - }, - ); - - this.app.get( - constants.SERVICE_API_ROUTES.SEARCH_ASSERTIONS, - this.rateLimitMiddleware, - this.slowDownMiddleware, - async (req, res, next) => { - if (!req.query.query || req.params.search !== 'search') { - return next({ code: 400, message: 'Params query is necessary.' }); - } - - let { prefix } = req.query; - let { limit } = req.query; - const query = req.query.query.toLowerCase(); - - if (!prefix) { - prefix = false; - } - - if (!limit || limit < 1 || !Number(limit)) { - limit = 20; - } else if (limit > 500) { - limit = 500; - } - - const operationId = uuidv1(); - let handlerId = null; - try { - this.logger.emit({ - msg: 'Started measuring execution of search command', - Event_name: 'search_start', - Operation_name: 'search', - Id_operation: operationId, - }); - const inserted_object = await Models.handler_ids.create({ - status: 'PENDING', - }); - handlerId = inserted_object.dataValues.handler_id; - res.status(202).send({ - handler_id: handlerId, - }); - - const response = await this.dataService.searchAssertions( - query, - { limit, prefix }, - true, - ); - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - - await this.fileService.writeContentsToFile( - handlerIdCachePath, - handlerId, - JSON.stringify(response), - ); - await Models.handler_ids.update( - { - status: 'COMPLETED', - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - - this.logger.info( - `Searching for closest ${this.config.replicationFactor} node(s) for keyword ${query}`, - ); - let nodes = await this.networkService.findNodes( - query, - constants.NETWORK_PROTOCOLS.SEARCH_ASSERTIONS, - this.config.replicationFactor, - ); - if (nodes.length < this.config.replicationFactor) { - this.logger.warn(`Found only ${nodes.length} node(s) for keyword ${query}`); - } - - nodes = [...new Set(nodes)]; - const searchPromises = nodes.map((node) => - this.queryService.searchAssertions( - { - query, - options: { limit, prefix }, - handlerId, - }, - node, - ), - ); - await Promise.allSettled(searchPromises); - } catch (e) { - this.logger.error({ - msg: `Unexpected error at search assertions route: ${e.message}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.SEARCH_ASSERTIONS_ROUTE_ERROR, - Event_value1: e.message, - Id_operation: operationId, - }); - this.updateFailedHandlerId(handlerId, e, next); - } finally { - this.logger.emit({ - msg: 'Finished measuring execution of search command', - Event_name: 'search_end', - Operation_name: 'search', - Id_operation: operationId, - }); - } - }, - ); - - this.app.get( - constants.SERVICE_API_ROUTES.SEARCH, - this.rateLimitMiddleware, - this.slowDownMiddleware, - async (req, res, next) => { - if (!req.query.query || req.params.search !== 'search') { - return next({ code: 400, message: 'Params query or ids are necessary.' }); - } - const operationId = uuidv1(); - let handlerId = null; - try { - this.logger.emit({ - msg: 'Started measuring execution of search command', - Event_name: 'search_start', - Operation_name: 'search', - Id_operation: operationId, - }); - - const query = req.query.query.toLowerCase(); - let issuers; - let types; - let { prefix } = req.query; - let { limit } = req.query; - - if (req.query.issuers) { - issuers = [req.query.issuers]; - if (req.query.issuers instanceof Array) { - issuers = [...new Set(req.query.issuers)]; - } - } - - if (req.query.types) { - types = [req.query.types]; - if (req.query.types instanceof Array) { - types = [...new Set(req.query.types)]; - } - } - - if (!prefix) { - prefix = false; - } - - if (!limit || limit < 1 || !Number(limit)) { - limit = 20; - } else if (limit > 500) { - limit = 500; - } - - const inserted_object = await Models.handler_ids.create({ - status: 'PENDING', - }); - handlerId = inserted_object.dataValues.handler_id; - res.status(200).send({ - handler_id: handlerId, - }); - - let response; - let nodes = []; - if (query) { - response = await this.dataService.searchByQuery( - query, - { - issuers, - types, - prefix, - limit, - }, - true, - ); - this.logger.info( - `Searching for closest ${this.config.replicationFactor} node(s) for keyword ${query}`, - ); - nodes = await this.networkService.findNodes( - query, - constants.NETWORK_PROTOCOLS.SEARCH, - this.config.replicationFactor, - ); - if (nodes.length < this.config.replicationFactor) { - this.logger.warn( - `Found only ${nodes.length} node(s) for keyword ${query}`, - ); - } - } - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - - await this.fileService.writeContentsToFile( - handlerIdCachePath, - handlerId, - JSON.stringify(response), - ); - - await Models.handler_ids.update( - { - status: 'COMPLETED', - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - const searchPromises = nodes.map((node) => - this.queryService.search( - { - query, - issuers, - types, - prefix, - limit, - handlerId, - }, - node, - ), - ); - await Promise.allSettled(searchPromises); - } catch (e) { - this.logger.error({ - msg: `Unexpected error at search entities route: ${e.message}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.SEARCH_ENTITIES_ROUTE_ERROR, - Event_value1: e.message, - Id_operation: operationId, - }); - this.updateFailedHandlerId(handlerId, e, next); - } finally { - this.logger.emit({ - msg: 'Finished measuring execution of search command', - Event_name: 'search_end', - Operation_name: 'search', - Id_operation: operationId, - }); - } - }, - ); - - this.app.post( - constants.SERVICE_API_ROUTES.QUERY, - this.rateLimitMiddleware, - this.slowDownMiddleware, - async (req, res, next) => { - if (!req.body || !req.body.query || !req.body.type) { - return next({ code: 400, message: 'Params query and type are necessary.' }); - } - - const { query, type: queryType } = req.body; - - const allowedQueries = ['construct', 'select']; - // Handle allowed query types, TODO: expand to select, ask and construct - if (!allowedQueries.includes(queryType.toLowerCase())) { - return next({ - code: 400, - message: `Unallowed query type, currently supported types: ${allowedQueries.join( - ', ', - )}`, - }); - } - const operationId = uuidv1(); - let handlerId = null; - try { - this.logger.emit({ - msg: 'Started measuring execution of query command', - Event_name: 'query_start', - Operation_name: 'query', - Id_operation: operationId, - Event_value1: queryType, - }); - - const inserted_object = await Models.handler_ids.create({ - status: 'PENDING', - }); - handlerId = inserted_object.dataValues.handler_id; - res.status(200).send({ - handler_id: handlerId, - }); - try { - const response = await this.dataService.runQuery( - query, - queryType.toUpperCase(), - ); - - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - if (response) { - await this.fileService.writeContentsToFile( - handlerIdCachePath, - handlerId, - JSON.stringify(response), - ); - } - - await Models.handler_ids.update( - { - status: 'COMPLETED', - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - } catch (e) { - this.updateFailedHandlerId(handlerId, e, next); - } - } catch (e) { - this.logger.error({ - msg: `Unexpected error at query route: ${e.message}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.QUERY_ROUTE_ERROR, - Event_value1: e.message, - Id_operation: operationId, - }); - } finally { - this.logger.emit({ - msg: 'Finished measuring execution of query command', - Event_name: 'query_end', - Operation_name: 'query', - Id_operation: operationId, - Event_value1: queryType, - }); - } - }, - ); - - this.app.post( - constants.SERVICE_API_ROUTES.PROOFS, - this.rateLimitMiddleware, - this.slowDownMiddleware, - async (req, res, next) => { - if (!req.body.nquads) { - return next({ code: 400, message: 'Params query and type are necessary.' }); - } - const operationId = uuidv1(); - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - let handlerId = null; - try { - this.logger.emit({ - msg: 'Started measuring execution of proofs command', - Event_name: 'proofs_start', - Operation_name: 'proofs', - Id_operation: operationId, - }); - - const inserted_object = await Models.handler_ids.create({ - status: 'PENDING', - }); - handlerId = inserted_object.dataValues.handler_id; - res.status(200).send({ - handler_id: handlerId, - }); - let assertions; - if (req.query.assertions) { - assertions = [req.query.assertions]; - if (req.query.assertions instanceof Array) { - assertions = [...new Set(req.query.assertions)]; - } - } - const reqNquads = JSON.parse(req.body.nquads); - - const result = []; - if (!assertions || assertions.length === 0) { - assertions = await this.dataService.findAssertions(reqNquads); - } - for (const assertionId of assertions) { - const rawNquads = await this.dataService.resolve(assertionId); - if (rawNquads) { - const { nquads } = await this.dataService.createAssertion(rawNquads); - const proofs = await this.validationService.getProofs( - nquads, - reqNquads, - ); - result.push({ assertionId, proofs }); - } - } - - await this.fileService.writeContentsToFile( - handlerIdCachePath, - handlerId, - JSON.stringify(result), - ); - - await Models.handler_ids.update( - { - status: 'COMPLETED', - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - } catch (e) { - this.logger.error({ - msg: `Unexpected error at proofs route: ${e.message}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.PROOFS_ROUTE_ERROR, - Event_value1: e.message, - Id_operation: operationId, - }); - this.updateFailedHandlerId(handlerId, e, next); - } finally { - this.logger.emit({ - msg: 'Finished measuring execution of proofs command', - Event_name: 'proofs_end', - Operation_name: 'proofs', - Id_operation: operationId, - }); - } - }, - ); - - this.app.get(constants.SERVICE_API_ROUTES.OPERATION_RESULT, async (req, res, next) => { - if ( - ![ - 'provision', - 'update', - 'publish', - 'resolve', - 'query', - 'entities:search', - 'assertions:search', - 'proofs:get', - ].includes(req.params.operation) - ) { - return next({ - code: 400, - message: - 'Unexisting operation, available operations are: provision, update, publish, resolve, entities:search, assertions:search, query and proofs:get', - }); - } - - const { handler_id, operation } = req.params; - if (!validator.isUUID(handler_id)) { - return next({ - code: 400, - message: 'Handler id is in wrong format', - }); - } - - try { - const handlerData = await Models.handler_ids.findOne({ - where: { - handler_id, - }, - }); - - let response; - if (handlerData) { - if (handlerData.status === 'FAILED') { - return res.status(200).send({ - status: handlerData.status, - data: JSON.parse(handlerData.data), - }); - } - const documentPath = this.fileService.getHandlerIdDocumentPath(handler_id); - switch (req.params.operation) { - case 'entities:search': - if (handlerData && handlerData.status === 'COMPLETED') { - handlerData.data = await this.fileService.loadJsonFromFile( - documentPath, - ); - } else { - handlerData.data = []; - } - - response = handlerData.data.map((x) => ({ - '@type': 'EntitySearchResult', - result: { - '@id': x.id, - '@type': x.type.toUpperCase(), - timestamp: x.timestamp, - }, - issuers: x.issuers, - assertions: x.assertions, - nodes: x.nodes, - resultScore: 0, - })); - - res.send({ - '@context': { - '@vocab': 'http://schema.org/', - goog: 'http://schema.googleapis.com/', - resultScore: 'goog:resultScore', - detailedDescription: 'goog:detailedDescription', - EntitySearchResult: 'goog:EntitySearchResult', - kg: 'http://g.co/kg', - }, - '@type': 'ItemList', - itemCount: response.length, - itemListElement: response, - }); - break; - case 'assertions:search': - if (handlerData && handlerData.status === 'COMPLETED') { - handlerData.data = await this.fileService.loadJsonFromFile( - documentPath, - ); - } else { - handlerData.data = []; - } - - response = handlerData.data.map(async (x) => ({ - '@type': 'AssertionSearchResult', - result: { - '@id': x.id, - metadata: x.metadata, - signature: x.signature, - rootHash: x.rootHash, - }, - nodes: x.nodes, - resultScore: 0, - })); - - response = await Promise.all(response); - - res.send({ - '@context': { - '@vocab': 'http://schema.org/', - goog: 'http://schema.googleapis.com/', - resultScore: 'goog:resultScore', - detailedDescription: 'goog:detailedDescription', - EntitySearchResult: 'goog:EntitySearchResult', - kg: 'http://g.co/kg', - }, - '@type': 'ItemList', - itemCount: response.length, - itemListElement: response, - }); - break; - case 'resolve': - if (handlerData && handlerData.status === 'COMPLETED') { - handlerData.data = await this.fileService.loadJsonFromFile( - documentPath, - ); - } - res.status(200).send({ - status: handlerData.status, - data: handlerData.data, - }); - break; - case 'provision': - case 'publish': - case 'update': - if (handlerData && handlerData.status === 'COMPLETED') { - const result = await this.fileService.loadJsonFromFile( - documentPath, - ); - delete result.assertion.data; - handlerData.data = result.assertion; - } - res.status(200).send({ - status: handlerData.status, - data: handlerData.data, - }); - break; - default: - if (handlerData && handlerData.status === 'COMPLETED') { - handlerData.data = await this.fileService.loadJsonFromFile( - documentPath, - ); - } - - res.status(200).send({ - status: handlerData.status, - data: handlerData.data, - }); - break; - } - } else { - next({ code: 404, message: `Handler with id: ${handler_id} does not exist.` }); - } - } catch (e) { - this.logger.error({ - msg: `Error while trying to fetch ${operation} data for handler id ${handler_id}. Error message: ${e.message}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.RESULTS_ROUTE_ERROR, - Event_value1: e.message, - Id_operation: handler_id, - }); - next({ code: 400, message: `Unexpected error at getting results: ${e}` }); - } - }); - - this.app.get(constants.SERVICE_API_ROUTES.INFO, async (req, res, next) => { - try { - const { version } = pjson; - - res.status(200).send({ - version, - auto_update: this.config.modules.autoUpdater.enabled, - telemetry: this.config.telemetryHub.enabled, - }); - } catch (e) { - this.logger.emit({ - msg: 'Telemetry logging error at node info route', - Operation_name: 'Error', - Event_name: constants.ERROR_TYPE.NODE_INFO_ROUTE_ERROR, - Event_value1: e.message, - Id_operation: 'Undefined', - }); - return next({ - code: 400, - message: `Error while fetching node info: ${e}. ${e.stack}`, - }); - } - }); - } - - updateFailedHandlerId(handlerId, error, next) { - if (handlerId !== null) { - Models.handler_ids.update( - { - status: 'FAILED', - data: JSON.stringify({ errorMessage: error.message }), - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - } else { - return next({ - code: 400, - message: 'Something went wrong with the requested operation, try again.', - }); - } - } -} - -module.exports = RpcController; diff --git a/modules/logger/pino-pretty-transport.js b/modules/logger/pino-pretty-transport.js deleted file mode 100644 index 0b719b6c1..000000000 --- a/modules/logger/pino-pretty-transport.js +++ /dev/null @@ -1,8 +0,0 @@ -// pino-pretty-transport.js -module.exports = opts => require('pino-pretty')({ - ...opts, - translateTime: 'yyyy-mm-dd HH:MM:ss', - ignore: 'pid,hostname,Event_name,Operation_name,Id_operation', - hideObject: true, - messageFormat: (log, messageKey) => `${log[messageKey]}` -}) diff --git a/modules/manager/base-module-manager.js b/modules/manager/base-module-manager.js deleted file mode 100644 index 456f9a90a..000000000 --- a/modules/manager/base-module-manager.js +++ /dev/null @@ -1,46 +0,0 @@ -const appRootPath = require('app-root-path'); - -class BaseModuleManager { - static EXCLUSIVE = 'exclusive'; - static PARALLEL = 'parallel'; - static SEQUENTIAL = 'sequential'; - - constructor(ctx) { - this.config = ctx.config; - this.logger = ctx.logger; - } - - initialize() { - try { - this.initialized = false; - const moduleConfig = this.config[this.getName()]; - if (!moduleConfig || !moduleConfig.enabled) { - this.logger.warn(`${this.getName()} module not defined or enabled in configuration`); - return false; - } - - if (!moduleConfig.packages || moduleConfig.packages.length > this.getPackagesLimit()) { - this.logger.warn(`Packages for ${this.getName()} module are not defined or exceed limit`); - return false; - } - - - this.handlers = []; - moduleConfig.appRootPath = appRootPath.path; - - for (let i = 0; i < moduleConfig.packages.length; i += 1) { - const module = require(moduleConfig.packages[i]); - module.initialize(moduleConfig, this.logger); - this.handlers.push({name: moduleConfig.packages[i], module}); - } - - this.initialized = true; - return true; - } catch (e) { - this.logger.error(e); - return false; - } - } -} - -module.exports = BaseModuleManager; diff --git a/modules/manager/telemetry-hub-module-manager.js b/modules/manager/telemetry-hub-module-manager.js deleted file mode 100644 index a8389cd5b..000000000 --- a/modules/manager/telemetry-hub-module-manager.js +++ /dev/null @@ -1,23 +0,0 @@ -const BaseModuleManager = require('./base-module-manager'); - -class TelemetryHubModuleManager extends BaseModuleManager { - getName() { - return 'telemetryHub'; - } - - getType() { - return BaseModuleManager.SEQUENTIAL; - } - - getPackagesLimit() { - return 1; - } - - async aggregateTelemetryData() { - if (this.initialized) { - return await this.handlers[0].module.aggregateTelemetryData(); - } - } -} - -module.exports = TelemetryHubModuleManager; diff --git a/modules/migration/m1-folder-structure-initial-migration.js b/modules/migration/m1-folder-structure-initial-migration.js deleted file mode 100644 index 5a9e47d41..000000000 --- a/modules/migration/m1-folder-structure-initial-migration.js +++ /dev/null @@ -1,93 +0,0 @@ -const fs = require('fs-extra'); -const appRootPath = require('app-root-path'); -const path = require('path'); -const { exec } = require('child_process'); -const pjson = require('../../package.json'); -const BaseMigration = require('./base-migration'); - -const CONFIGURATION_NAME = '.origintrail_noderc'; - -class M1FolderStructureInitialMigration extends BaseMigration { - constructor(logger, config) { - super('M1FolderStructureInitialMigration', logger, config); - this.logger = logger; - this.config = config; - } - - async run() { - if (process.env.NODE_ENV === 'testnet' || process.env.NODE_ENV === 'mainnet') { - if (await this.migrationAlreadyExecuted()) { - return; - } - - const currentSymlink = path.join(appRootPath.path, '..', 'current'); - if (await fs.pathExists(currentSymlink)) { - await this.finalizeMigration(); - return; - } - - const currentVersion = pjson.version; - const temporaryAppRootPath = path.join(appRootPath.path, '..', 'ot-node-tmp'); - const newTemporaryAppDirectoryPath = path.join(temporaryAppRootPath, currentVersion); - await fs.ensureDir(newTemporaryAppDirectoryPath); - - const currentAppRootPath = appRootPath.path; - - await fs.copy(currentAppRootPath, newTemporaryAppDirectoryPath); - - await fs.remove(currentAppRootPath); - - await fs.rename(temporaryAppRootPath, currentAppRootPath); - - const newAppDirectoryPath = path.join(currentAppRootPath, currentVersion); - - const currentSymlinkFolder = path.join(currentAppRootPath, 'current'); - if (await fs.pathExists(currentSymlinkFolder)) { - await fs.remove(currentSymlinkFolder); - } - await fs.ensureSymlink(newAppDirectoryPath, currentSymlinkFolder); - - const oldConfigurationPath = path.join(newAppDirectoryPath, CONFIGURATION_NAME); - const newConfigurationPath = path.join(currentAppRootPath, CONFIGURATION_NAME); - await fs.move(oldConfigurationPath, newConfigurationPath); - - await this.finalizeMigration(path.join(currentAppRootPath, 'data', 'migrations')); - const otnodeServicePath = path.join( - newAppDirectoryPath, - 'installer', - 'data', - 'otnode.service', - ); - - try { - await this.updateOtNodeService(otnodeServicePath); - } catch (error) { - this.logger.warn( - `Unable to apply new ot-node service file please do it manually! Error: ${error}`, - ); - } - this.logger.info('Folder structure migration completed, node will now restart!'); - process.exit(1); - } else { - this.logger.info( - `Folder structure initial migration skipped for env: ${process.env.NODE_ENV}`, - ); - } - } - - async updateOtNodeService(otnodeServicePath) { - return new Promise((resolve, reject) => { - const command = `cp ${otnodeServicePath} /lib/systemd/system/ && systemctl daemon-reload`; - this.logger.trace( - `Copy and apply new otnode service file. Running the command: ${command}`, - ); - const child = exec(command); - - child.stdout.on('end', () => { - resolve(); - }); - }); - } -} - -module.exports = M1FolderStructureInitialMigration; diff --git a/modules/service/blockchain-service.js b/modules/service/blockchain-service.js deleted file mode 100644 index 1e135969e..000000000 --- a/modules/service/blockchain-service.js +++ /dev/null @@ -1,68 +0,0 @@ -const Blockchain = require('../../external/web3-blockchain-service'); - -class BlockchainService { - constructor(ctx) { - this.config = ctx.config; - this.logger = ctx.logger; - } - - initialize() { - this.implementation = new Blockchain({ - networkId: this.config.blockchain[0].networkId, - hubContractAddress: this.config.blockchain[0].hubContractAddress, - publicKey: this.config.blockchain[0].publicKey, - privateKey: this.config.blockchain[0].privateKey, - rpcEndpoints: this.config.blockchain[0].rpcEndpoints, - }); - return this.implementation.initialize(this.logger); - } - - getName() { - return this.implementation.getName(); - } - - getPrivateKey() { - return this.implementation.getPrivateKey(); - } - - getPublicKey() { - return this.implementation.getPublicKey(); - } - - async createAssertionRecord(stateCommitHash, rootHash, issuer) { - return this.implementation.createAssertionRecord(stateCommitHash, rootHash, issuer); - } - - async registerAsset(uai, type, alsoKnownAs, stateCommitHash, rootHash, tokenAmount) { - return this.implementation.registerAsset( - uai, - type, - alsoKnownAs, - stateCommitHash, - rootHash, - tokenAmount, - ); - } - - async updateAsset(UAI, newStateCommitHash, rootHash) { - return this.implementation.updateAsset(UAI, newStateCommitHash, rootHash); - } - - async getAssertionProofs(assertionId) { - return this.implementation.getAssertionProofs(assertionId); - } - - async getAssetProofs(ual) { - return this.implementation.getAssetProofs(ual); - } - - async healthCheck() { - return this.implementation.healthCheck(); - } - - async restartService() { - return this.implementation.restartService(); - } -} - -module.exports = BlockchainService; diff --git a/modules/service/data-service.js b/modules/service/data-service.js deleted file mode 100644 index 728e02f78..000000000 --- a/modules/service/data-service.js +++ /dev/null @@ -1,738 +0,0 @@ -const { v1: uuidv1 } = require('uuid'); -const N3 = require('n3'); -const toobusy = require('toobusy-js'); -const constants = require('../constants'); -const GraphDB = require('../../external/graphdb-service'); -const Blazegraph = require('../../external/blazegraph-service'); -const Fuseki = require('../../external/fuseki-service'); - -class DataService { - constructor(ctx) { - this.config = ctx.config; - this.logger = ctx.logger; - this.constants = ctx.constants; - this.validationService = ctx.validationService; - this.networkService = ctx.networkService; - this.nodeService = ctx.nodeService; - this.workerPool = ctx.workerPool; - this.blockchainService = ctx.blockchainService; - this.tripleStoreQueue = ctx.tripleStoreQueue.promise( - this, - this.handleTripleStoreRequest, - 1, - ); - this.N3Parser = new N3.Parser({ format: 'N-Triples', baseIRI: 'http://schema.org/' }); - } - - getTripleStoreQueueLength() { - return this.tripleStoreQueue.length(); - } - - getName() { - return this.implementation.getName(); - } - - async initialize() { - const config = { - name: this.config.graphDatabase.name, - url: this.config.graphDatabase.url, - }; - switch (this.config.graphDatabase.implementation) { - case constants.TRIPLE_STORE_IMPLEMENTATION.BLAZEGRAPH: - this.implementation = new Blazegraph(config); - break; - case constants.TRIPLE_STORE_IMPLEMENTATION.GRAPHDB: - this.implementation = new GraphDB(config); - break; - case constants.TRIPLE_STORE_IMPLEMENTATION.FUSEKI: - this.implementation = new Fuseki(config); - break; - default: - throw Error('Unknown graph database implementation') - } - - let ready = await this.healthCheck(); - let retries = 0; - while (!ready && retries < constants.TRIPLE_STORE_CONNECT_MAX_RETRIES) { - retries += 1; - this.logger.warn(`Cannot connect to Triple store (${this.getName()}), retry number: ${retries}/${constants.TRIPLE_STORE_CONNECT_MAX_RETRIES}. Retrying in ${constants.TRIPLE_STORE_CONNECT_RETRY_FREQUENCY} seconds again.`); - await new Promise( - (resolve) => setTimeout( - resolve, - constants.TRIPLE_STORE_CONNECT_RETRY_FREQUENCY * 1000, - ), - ); - ready = await this.healthCheck(); - } - if (retries === constants.TRIPLE_STORE_CONNECT_MAX_RETRIES) { - this.logger.error({ - msg: `Triple Store (${this.getName()}) not available, max retries reached.`, - Event_name: constants.ERROR_TYPE.TRIPLE_STORE_UNAVAILABLE_ERROR, - }); - this.nodeService.stop(1); - } - - return this.implementation.initialize(this.logger); - } - - async reinitalize() { - // TODO: Discussion: add retries - or not - const ready = await this.healthCheck(); - if (!ready) { - this.logger.warn(`Cannot connect to Triple store (${this.getName()}), check if your triple store is running.`); - } else { - this.implementation.initialize(this.logger); - } - } - - async canonize(fileContent, fileExtension) { - switch (fileExtension) { - case '.json': - const assertion = { - metadata: { - timestamp: new Date().toISOString(), - }, - data: await this.workerPool.exec('JSONParse', [fileContent.toString()]), - }; - const nquads = await this.workerPool.exec('toNQuads', [assertion.data]); - if (nquads && nquads.length === 0) { - throw new Error('File format is corrupted, no n-quads extracted.'); - } - - let type; - if (assertion.data['@type']) { - type = assertion.data['@type']; - delete assertion.data['@type']; - } else if (assertion.data.type) { - type = assertion.data.type; - delete assertion.data.type; - } else { - type = 'default'; - } - assertion.metadata.type = type; - assertion.data = await this.fromNQuads(nquads, type); - - return { assertion, nquads }; - default: - throw new Error(`File extension ${fileExtension} is not supported.`); - } - } - - async insert(data, assertionId) { - try { - const result = await this.tripleStoreQueue.push({ operation: 'insert', data, assertionId }); - return result; - } catch (e) { - // TODO: Check situation when inserting data recieved from other node - this.handleUnavailableTripleStoreError(e); - } - } - - async resolve(id, localQuery = false, metadataOnly = false) { - try { - let nquads = await this.tripleStoreQueue.push({ operation: 'resolve', id }); - if (nquads.length) { - nquads = nquads.toString(); - nquads = nquads.split('\n'); - nquads = nquads.filter((x) => x !== ''); - // canonize nquads before roothash validation - nquads = await this.workerPool.exec('toNQuads', [nquads.join('\n'), 'application/n-quads']); - } else { - nquads = null; - } - - // TODO: add function for this conditional expr for increased readability - if (!localQuery && nquads && nquads.find((x) => x.includes(`<${constants.DID_PREFIX}:${id}> "private" .`))) { - return null; - } - if (metadataOnly) { - nquads = nquads.filter((x) => x.startsWith(`<${constants.DID_PREFIX}:${id}>`)); - } - return nquads; - } catch (e) { - this.handleUnavailableTripleStoreError(e); - } - } - - async assertionsByAsset(id) { - try { - const assertions = await this.tripleStoreQueue.push({ operation: 'assertionsByAsset', id }); - - return assertions.map((x) => ({ - id: x.assertionId.slice(8), - issuer: x.issuer, - timestamp: x.timestamp, - })); - } catch (e) { - this.handleUnavailableTripleStoreError(e); - } - } - - async createAssertion(rawNQuads) { - const metadata = []; - const data = []; - const nquads = []; - rawNQuads.forEach((nquad) => { - if (nquad.startsWith(`<${constants.DID_PREFIX}:`)) { - metadata.push(nquad); - } else { - data.push(nquad); - } - if (!nquad.includes('hasRootHash') && !nquad.includes('hasBlockchain') && !nquad.includes('hasTransactionHash')) { - nquads.push(nquad); - } - }); - const jsonld = await this.extractMetadata(metadata); - jsonld.data = data; - return { jsonld, nquads }; - } - - verifyAssertion(assertion, rdf, options = undefined) { - return new Promise(async (resolve) => { - try { - // let dataHash; - // if (assertion.metadata.visibility) { - // const framedData = await this.fromRDF(assertion.data, assertion.metadata.type); - // dataHash = this.validationService.calculateHash(framedData); - // } else { - // dataHash = assertion.metadata.dataHash; - // } - const { dataHash } = assertion.metadata; - - const metadataHash = this.validationService.calculateHash(assertion.metadata); - const calculatedAssertionId = this.validationService.calculateHash( - metadataHash + dataHash, - ); - if (assertion.id !== calculatedAssertionId) { - this.logger.error({ - msg: `Assertion Id ${assertion.id} doesn't match with calculated ${calculatedAssertionId}`, - Event_name: constants.ERROR_TYPE.VERIFY_ASSERTION_ERROR, - Event_value1: 'Assertion ID not matching calculated', - }); - return resolve(false); - } - - if (!this.validationService.verify( - assertion.id, - assertion.signature, - assertion.metadata.issuer, - )) { - this.logger.error({ - msg: 'Signature and issuer don\'t match', - Event_name: constants.ERROR_TYPE.VERIFY_ASSERTION_ERROR, - Event_value1: 'Signature and issuer not matching', - }); - return resolve(false); - } - - if (assertion.metadata.visibility) { - if (assertion.metadata.UALs && (!options || (options && options.isAsset))) { - const { - issuer, - assertionId, - } = await this.blockchainService.getAssetProofs(assertion.metadata.UALs[0]); - if (assertionId !== assertion.id) { - this.logger.error({ - msg: `Assertion ${assertion.id} doesn't match with calculated ${assertionId}`, - Event_name: constants.ERROR_TYPE.VERIFY_ASSERTION_ERROR, - Event_value1: 'AssertionId not matching calculated', - }); - return resolve(false); - } - if (issuer.toLowerCase() !== assertion.metadata.issuer.toLowerCase()) { - this.logger.error({ - msg: `Issuer ${issuer} doesn't match with received ${assertion.metadata.issuer}`, - Event_name: constants.ERROR_TYPE.VERIFY_ASSERTION_ERROR, - Event_value1: 'Issuer not matching', - }); - return resolve(false); - } - } else { - const calculateRootHash = this.validationService.calculateRootHash( - [...new Set(rdf)], - ); - const { rootHash, issuer } = await this.blockchainService - .getAssertionProofs(assertion.id); - if (rootHash !== `0x${calculateRootHash}`) { - this.logger.error({ - msg: `Root hash ${rootHash} doesn't match with calculated 0x${calculateRootHash}`, - Event_name: constants.ERROR_TYPE.VERIFY_ASSERTION_ERROR, - Event_value1: 'Root hash not matching calculated', - }); - return resolve(false); - } - if (issuer.toLowerCase() !== assertion.metadata.issuer.toLowerCase()) { - this.logger.error({ - msg: `Issuer ${issuer} doesn't match with received ${assertion.metadata.issuer}`, - Event_name: constants.ERROR_TYPE.VERIFY_ASSERTION_ERROR, - Event_value1: 'Issuer not matching', - }); - return resolve(false); - } - } - } - return resolve(true); - } catch (e) { - return resolve(false); - } - }); - } - - async searchByQuery(query, options, localQuery = false) { - try { - const assertions = await this.tripleStoreQueue.push({ - operation: 'findAssetsByKeyword', query, options, localQuery, - }); - if (!assertions) return null; - const result = []; - for (let assertion of assertions) { - assertion.assertionId = assertion.assertionId.replace(`${constants.DID_PREFIX}:`, ''); - const { assertionId } = assertion; - const assetId = JSON.parse(assertion.assetId) - - const { - assertionId: assertionIdBlockchain, - } = await this.blockchainService.getAssetProofs(assetId); - - if (assertionIdBlockchain !== assertionId) { - continue; - } - - const nquads = await this.resolve(assertion.assertionId, localQuery, true); - if (!nquads) { - continue; - } - - if (localQuery) { - assertion = await this.createAssertion(nquads); - - let object = result.find( - (x) => x.type === assertion.jsonld.metadata.type - && x.id === assertion.jsonld.metadata.UALs[0], - ); - if (!object) { - object = { - id: assertion.jsonld.metadata.UALs[0], - type: assertion.jsonld.metadata.type, - timestamp: assertion.jsonld.metadata.timestamp, - issuers: [], - assertions: [], - nodes: [this.networkService.getPeerId()], - }; - result.push(object); - } - - if (object.issuers.indexOf(assertion.jsonld.metadata.issuer) === -1) { - object.issuers.push(assertion.jsonld.metadata.issuer); - } - - if (object.assertions.indexOf(assertion.jsonld.id) === -1) { - object.assertions.push(assertion.jsonld.id); - } - if ( - new Date(object.timestamp) < new Date(assertion.jsonld.metadata.timestamp) - ) { - object.timestamp = assertion.jsonld.metadata.timestamp; - } - } else { - let object = result.find((x) => x.id === assertionId); - if (!object) { - object = { - assertionId, - node: this.networkService.getPeerId(), - nquads, - }; - result.push(object); - } - } - } - - return result; - } catch (e) { - this.handleUnavailableTripleStoreError(e); - } - } - - async searchAssertions(query, options, localQuery = false) { - try { - const assertions = await this.tripleStoreQueue.push({ - operation: 'findAssertionsByKeyword', query, options, localQuery, - }); - if (!assertions) return null; - - const result = []; - for (let assertion of assertions) { - const assertionId = assertion.assertionId = assertion.assertionId.replace(`${constants.DID_PREFIX}:`, ''); - const nquads = await this.resolve(assertion.assertionId, localQuery, true); - if (!nquads) { - continue; - } - - if (localQuery) { - assertion = await this.createAssertion(nquads); - let object = result.find((x) => x.id === assertion.id); - if (!object) { - object = { - id: assertion.jsonld.id, - metadata: assertion.jsonld.metadata, - signature: assertion.jsonld.signature, - nodes: [this.networkService.getPeerId()], - }; - result.push(object); - } - } else { - let object = result.find((x) => x.id === assertionId); - if (!object) { - object = { - assertionId, - node: this.networkService.getPeerId(), - nquads, - }; - result.push(object); - } - } - } - - return result; - } catch (e) { - this.handleUnavailableTripleStoreError(e); - } - } - - async findAssertions(nquads) { - try { - let assertions = []; - for (const nquad of nquads) { - const result = await this.tripleStoreQueue.push({ operation: 'findAssertions', nquad }); - assertions = [...new Set(assertions.concat(result))]; - } - - return assertions; - } catch (e) { - this.handleUnavailableTripleStoreError(e); - } - } - - async runQuery(query, type) { - const Id_operation = uuidv1(); - let result; - this.logger.emit({ - msg: 'Started measuring execution of query node', - Event_name: 'query_node_start', - Operation_name: 'query_node', - Id_operation, - }); - const quads = []; - - try { - switch (type) { - case 'SELECT': - result = await this.tripleStoreQueue.push({ operation: 'select', query }); - break; - case 'CONSTRUCT': - result = await this.tripleStoreQueue.push({ operation: 'construct', query }); - result = result.toString(); - if (result) { - result = result.split('\n').filter((x) => x !== ''); - } else { - result = []; - } - await this.N3Parser.parse( - result.join('\n'), - (error, quad, prefixes) => { - if (quad) { - quads.push({ - subject: quad._subject.id, - predicate: quad.predicate.id, - object: quad.object.id, - }); - } - }, - ); - result = quads; - - break; - // case 'ASK': - // result = this.implementation.ask(query); - // break; - default: - throw Error('Query type not supported'); - } - - return result; - } catch (e) { - this.handleUnavailableTripleStoreError(e); - } finally { - this.logger.emit({ - msg: 'Finished measuring execution of query node', - Event_name: 'query_node_end', - Operation_name: 'query_node', - Id_operation, - }); - } - } - - async fromNQuads(nquads, type) { - const Id_operation = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of fromRDF command', - Event_name: 'fromrdf_start', - Operation_name: 'fromrdf', - Id_operation, - }); - let context; - let - frame; - switch (type.toLowerCase()) { - case this.constants.GS1EPCIS: - context = { - '@context': [ - 'https://gs1.github.io/EPCIS/epcis-context.jsonld', - { - example: 'http://ns.example.com/epcis/', - }, - ], - }; - - frame = { - '@context': [ - 'https://gs1.github.io/EPCIS/epcis-context.jsonld', - { - example: 'http://ns.example.com/epcis/', - }, - ], - isA: 'EPCISDocument', - }; - break; - case this.constants.ERC721: - case this.constants.OTTELEMETRY: - context = { - '@context': 'https://www.schema.org/', - }; - frame = { - '@context': 'https://www.schema.org/', - '@type': type, - }; - break; - default: - context = { - '@context': ['https://www.schema.org/'], - }; - - frame = {}; - } - const json = await this.workerPool.exec('fromNQuads', [nquads, context, frame]); - - this.logger.emit({ - msg: 'Finished measuring execution of fromRDF command', - Event_name: 'fromrdf_end', - Operation_name: 'fromrdf', - Id_operation, - }); - - return json; - } - - healthCheck() { - return this.implementation.healthCheck(); - } - - restartService() { - return this.implementation.restartService(); - } - - async appendMetadata(nquads, assertion) { - const metadata = await this.createMetadata(assertion); - nquads = nquads.concat(metadata); - return nquads; - } - - async createMetadata(assertion) { - const metadata = { - '@context': 'https://www.schema.org/', - '@id': `${constants.DID_PREFIX}:${assertion.id}`, - hasType: assertion.metadata.type, - hasSignature: assertion.signature, - hasIssuer: assertion.metadata.issuer, - hasTimestamp: assertion.metadata.timestamp, - hasVisibility: assertion.metadata.visibility, - hasDataHash: assertion.metadata.dataHash, - hasKeywords: assertion.metadata.keywords, - }; - - if (assertion.metadata.UALs) { - metadata.hasUALs = assertion.metadata.UALs; - } - - const result = await this.workerPool.exec('toNQuads', [metadata]); - return result; - } - - async appendBlockchainMetadata(nquads, assertion) { - const blockchainMetadata = await this.workerPool.exec('toNQuads', [{ - '@context': 'https://www.schema.org/', - '@id': `${constants.DID_PREFIX}:${assertion.id}`, - hasBlockchain: assertion.blockchain.name, - hasTransactionHash: assertion.blockchain.transactionHash, - }]); - nquads = nquads.concat(blockchainMetadata); - return nquads; - } - - async extractMetadata(rdf) { - return new Promise(async (accept, reject) => { - const parser = new N3.Parser({ format: 'N-Triples', baseIRI: 'http://schema.org/' }); - const result = { - metadata: { - keywords: [], - UALs: [], - }, - blockchain: {}, - }; - - const quads = []; - await parser.parse( - rdf.join('\n'), - (error, quad, prefixes) => { - if (error) { - reject(error); - } - if (quad) { - quads.push(quad); - } - }, - ); - - for (const quad of quads) { - try { - switch (quad._predicate.id) { - case 'http://schema.org/hasType': - result.metadata.type = JSON.parse(quad._object.id); - result.id = quad._subject.id.replace(`${constants.DID_PREFIX}:`, ''); - break; - case 'http://schema.org/hasTimestamp': - result.metadata.timestamp = JSON.parse(quad._object.id); - break; - case 'http://schema.org/hasUALs': - result.metadata.UALs.push(JSON.parse(quad._object.id)); - break; - case 'http://schema.org/hasIssuer': - result.metadata.issuer = JSON.parse(quad._object.id); - break; - case 'http://schema.org/hasVisibility': - result.metadata.visibility = JSON.parse(quad._object.id); - break; - case 'http://schema.org/hasDataHash': - result.metadata.dataHash = JSON.parse(quad._object.id); - break; - case 'http://schema.org/hasKeywords': - result.metadata.keywords.push(JSON.parse(quad._object.id)); - break; - case 'http://schema.org/hasSignature': - result.signature = JSON.parse(quad._object.id); - break; - case 'http://schema.org/hasRootHash': - result.rootHash = JSON.parse(quad._object.id); - break; - case 'http://schema.org/hasBlockchain': - result.blockchain.name = JSON.parse(quad._object.id); - break; - case 'http://schema.org/hasTransactionHash': - result.blockchain.transactionHash = JSON.parse(quad._object.id); - break; - default: - break; - } - } catch (e) { - this.logger.error({ - msg: `Error in extracting metadata: ${e}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.EXTRACT_METADATA_ERROR, - }); - } - } - - result.metadata.keywords.sort(); - if (!result.metadata.UALs.length) { - delete result.metadata.UALs; - } else { - result.metadata.UALs.sort(); - } - - accept(result); - }); - } - - async handleTripleStoreRequest(args) { - if (this.getTripleStoreQueueLength() > constants.TRIPLE_STORE_QUEUE_LIMIT) { - throw new Error('Triple store queue is full'); - } - const { operation } = args; - let result; - - switch (operation) { - case 'insert': - result = await this.implementation.insert(args.data, args.assertionId); - break; - case 'resolve': - result = await this.implementation.resolve(args.id); - break; - case 'assertionsByAsset': - result = await this.implementation.assertionsByAsset(args.id); - break; - case 'findAssetsByKeyword': - result = await this.implementation.findAssetsByKeyword( - args.query, - args.options, - args.localQuery, - ); - break; - case 'findAssertionsByKeyword': - result = await this.implementation.findAssertionsByKeyword( - args.query, - args.options, - args.localQuery, - ); - break; - case 'construct': - result = await this.implementation.construct(args.query); - break; - case 'findAssertions': - result = await this.implementation.findAssertions(args.nquad); - break; - case 'select': - result = await this.implementation.execute(args.query); - break; - default: - throw new Error('Unknown operation for triple store'); - } - - return result; - } - - handleUnavailableTripleStoreError(e) { - if (e.code === 'ECONNREFUSED') { - this.logger.error({ - msg: `Triple Store (${this.getName()}) not available: ${e.message}. ${e.stack}`, - Event_name: constants.ERROR_TYPE.TRIPLE_STORE_UNAVAILABLE_ERROR, - Event_value1: e.message, - }); - this.reinitalize(); - } else { - throw e; - } - } - - isNodeBusy(busynessLimit) { - const isTripleStoreBusy = this.getTripleStoreQueueLength() > busynessLimit; - const isToobusy = toobusy(); - if (isTripleStoreBusy) { - this.logger.info('TripleStore is busy.'); - } - if (isToobusy) { - this.logger.info('Node is busy.'); - } - return isToobusy || isTripleStoreBusy; - } -} - -module.exports = DataService; diff --git a/modules/service/file-service.js b/modules/service/file-service.js deleted file mode 100644 index cdbc4dbca..000000000 --- a/modules/service/file-service.js +++ /dev/null @@ -1,130 +0,0 @@ -const path = require('path'); -const { exists, mkdir } = require('fs'); -const fs = require('fs'); -const appRootPath = require('app-root-path'); - -const MIGRATION_FOLDER_NAME = 'migrations'; - -class FileService { - constructor(ctx) { - this.config = ctx.config; - } - - getFileExtension(fileName) { - return path.extname(fileName).toLowerCase(); - } - - /** - * Write contents to file - * @param directory - * @param filename - * @param data - * @returns {Promise} - */ - writeContentsToFile(directory, filename, data) { - return new Promise((resolve, reject) => { - mkdir(directory, { recursive: true }, (err) => { - if (err) { - reject(err); - } else { - const fullpath = path.join(directory, filename); - try { - fs.writeFile(fullpath, data, (err) => { - if (err) { - reject(err); - } else { - resolve(fullpath); - } - }); - } catch (e) { - reject(e); - } - } - }); - }); - } - - createFolder(folderName) {} - - readFileOnPath(filePath) { - return this._readFile(filePath, false); - } - - /** - * Loads JSON data from file - * @returns {Promise} - * @private - */ - loadJsonFromFile(filePath) { - return this._readFile(filePath, true); - } - - _readFile(filePath, convertToJSON = false) { - return new Promise((resolve, reject) => { - exists(filePath, (exist) => { - if (exist) { - fs.readFile(filePath, (err, data) => { - if (err) { - reject(err); - } else { - try { - if (convertToJSON) { - const fileJson = JSON.parse(data); - resolve(fileJson); - } - resolve(data.toString()); - } catch (error) { - reject(error); - } - } - }); - } else { - reject(new Error(`File doesn't exist on file path: ${filePath}`)); - } - }); - }); - } - - removeFile(filePath) { - return new Promise((resolve, reject) => { - exists(filePath, (exist) => { - if (exist) { - fs.unlink(filePath, (err) => { - if (err) { - reject(err); - } else { - resolve(true); - } - }); - } else { - resolve(false); - } - }); - }); - } - - getDataFolderPath() { - if (process.env.NODE_ENV === 'testnet' || process.env.NODE_ENV === 'mainnet') { - return path.join(appRootPath.path, '..', this.config.appDataPath); - } - return path.join(appRootPath.path, this.config.appDataPath); - } - - getUpdateFilePath() { - return path.join(this.getDataFolderPath(), 'UPDATED'); - } - - getMigrationFolderPath() { - return path.join(this.getDataFolderPath(), MIGRATION_FOLDER_NAME); - } - - getHandlerIdCachePath() { - return path.join(this.getDataFolderPath(), 'handler_id_cache'); - } - - getHandlerIdDocumentPath(handlerId) { - return path.join(this.getHandlerIdCachePath(), handlerId); - } -} - -module.exports = FileService; diff --git a/modules/service/network-service.js b/modules/service/network-service.js deleted file mode 100644 index 32a7aa5b7..000000000 --- a/modules/service/network-service.js +++ /dev/null @@ -1,98 +0,0 @@ -const { v1: uuidv1 } = require('uuid'); -const Libp2p = require('../../external/libp2p-service'); - -class NetworkService { - constructor(ctx) { - this.config = ctx.config; - this.logger = ctx.logger; - this.rankingService = ctx.rankingService; - this.workerPool = ctx.workerPool; - } - - initialize() { - this.implementation = new Libp2p({ - bootstrapMultiAddress: this.config.network.bootstrap, - port: this.config.network.port, - privateKey: this.config.network.privateKey, - workerPool: this.workerPool, - }); - return this.implementation.initialize(this.logger); - } - - getName() { - return this.implementation.getName(); - } - - /** - * Retrieve the closest peers to the given key. - * - * @param {String} key - * @param {Number} limit - * @returns Promise{Iterable} - */ - async findNodes(key, protocol, limit) { - const Id_operation = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of find nodes', Event_name: 'find_nodes_start', Operation_name: 'find_nodes', Id_operation, - }); - this.logger.emit({ - msg: 'Started measuring execution of kad find nodes', Event_name: 'kad_find_nodes_start', Operation_name: 'find_nodes', Id_operation, - }); - const nodes = await this.implementation.findNodes(key, protocol); - this.logger.emit({ - msg: 'Finished measuring execution of kad find nodes ', Event_name: 'kad_find_nodes_end', Operation_name: 'find_nodes', Id_operation, - }); - this.logger.emit({ - msg: 'Started measuring execution of rank nodes', Event_name: 'rank_nodes_start', Operation_name: 'find_nodes', Id_operation, - }); - const rankedNodes = await this.rankingService.rank(nodes, key, limit, ['kad-identity']); - this.logger.emit({ - msg: 'Finished measuring execution of rank nodes', Event_name: 'rank_nodes_end', Operation_name: 'find_nodes', Id_operation, - }); - this.logger.emit({ - msg: 'Finished measuring execution of find nodes', Event_name: 'find_nodes_end', Operation_name: 'find_nodes', Id_operation, - }); - return rankedNodes; - } - - getPeers() { - return this.implementation.getPeers(); - } - - /** - * Store the given key/value pair at the peer `target`. - * - * @param {String} key - * @param {Object} object - value to be stored - * @param {PeerId} target - */ - store(peer, key, object) { - return this.implementation.store(peer, key, object); - } - - handleMessage(eventName, handler, options) { - this.implementation.handleMessage(eventName, handler, options); - } - - async sendMessage(eventName, data, peerId) { - return this.implementation.sendMessage(eventName, data, peerId); - } - - getPeerId() { - return this.implementation.getPeerId(); - } - - getPrivateKey() { - return this.implementation.getPrivateKey(); - } - - async healthCheck() { - return this.implementation.healthCheck(); - } - - async restartService() { - return this.implementation.restartService(); - } -} - -module.exports = NetworkService; diff --git a/modules/service/node-service.js b/modules/service/node-service.js deleted file mode 100644 index fe3978113..000000000 --- a/modules/service/node-service.js +++ /dev/null @@ -1,13 +0,0 @@ -class NodeService { - constructor(ctx) { - this.config = ctx.config; - this.logger = ctx.logger; - } - - stop(exitCode) { - this.logger.closeLogger('Stopping the node...'); - process.exit(exitCode); - } -} - -module.exports = NodeService; diff --git a/modules/service/publish-service.js b/modules/service/publish-service.js deleted file mode 100644 index 0c381bd76..000000000 --- a/modules/service/publish-service.js +++ /dev/null @@ -1,204 +0,0 @@ -const { v1: uuidv1 } = require('uuid'); -const sleep = require('sleep-async')().Promise; -const constants = require('../constants'); - -class PublishService { - constructor(ctx) { - this.networkService = ctx.networkService; - this.validationService = ctx.validationService; - this.blockchainService = ctx.blockchainService; - this.dataService = ctx.dataService; - this.logger = ctx.logger; - this.commandExecutor = ctx.commandExecutor; - this.fileService = ctx.fileService; - this.workerPool = ctx.workerPool; - } - - async publish( - fileContent, - fileExtension, - keywords, - visibility, - ual, - handlerId, - operationId, - isTelemetry = false, - ) { - try { - this.logger.emit({ - msg: 'Started measuring execution of data canonization', - Event_name: 'publish_canonization_start', - Operation_name: 'publish_canonization', - Id_operation: operationId, - }); - let { - assertion, - nquads, - } = await this.dataService.canonize(fileContent, fileExtension); - this.logger.emit({ - msg: 'Finished measuring execution of data canonization', - Event_name: 'publish_canonization_end', - Operation_name: 'publish_canonization', - Id_operation: operationId, - }); - this.logger.emit({ - msg: 'Started measuring execution of generate metadata', - Event_name: 'publish_generate_metadata_start', - Operation_name: 'publish_generate_metadata', - Id_operation: operationId, - }); - assertion.metadata.issuer = this.validationService.getIssuer(); - assertion.metadata.visibility = visibility; - assertion.metadata.keywords = keywords; - assertion.metadata.keywords.sort(); - let method = constants.PUBLISH_METHOD.PUBLISH; - if (ual === null) { - method = constants.PUBLISH_METHOD.PROVISION; - ual = this.validationService.calculateHash( - assertion.metadata.timestamp - + assertion.metadata.type - + assertion.metadata.issuer, - ); - assertion.metadata.UALs = [ual]; - } else if (ual !== undefined) { - method = constants.PUBLISH_METHOD.UPDATE; - assertion.metadata.UALs = [ual]; - } - - assertion.metadata.dataHash = this.validationService.calculateHash(assertion.data); - assertion.metadataHash = this.validationService.calculateHash(assertion.metadata); - assertion.id = this.validationService.calculateHash( - assertion.metadataHash + assertion.metadata.dataHash, - ); - assertion.signature = this.validationService.sign(assertion.id); - - nquads = await this.dataService.appendMetadata(nquads, assertion); - assertion.rootHash = this.validationService.calculateRootHash(nquads); - - if (ual !== undefined) { - this.logger.info(`UAL: ${ual}`); - } - this.logger.info(`Assertion ID: ${assertion.id}`); - this.logger.info(`Assertion metadataHash: ${assertion.metadataHash}`); - this.logger.info(`Assertion dataHash: ${assertion.metadata.dataHash}`); - this.logger.info(`Assertion rootHash: ${assertion.rootHash}`); - this.logger.info(`Assertion signature: ${assertion.signature}`); - this.logger.info(`Assertion length in N-QUADS format: ${nquads.length}`); - this.logger.info(`Keywords: ${keywords}`); - this.logger.emit({ - msg: assertion.id, - Event_name: 'publish_assertion_id', - Operation_name: 'publish_assertion_id', - Id_operation: operationId, - }); - - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - - const documentPath = await this.fileService - .writeContentsToFile(handlerIdCachePath, handlerId, - await this.workerPool.exec('JSONStringify', [{ - nquads, assertion, - }])); - - const commandSequence = [ - 'submitProofsCommand', - 'insertAssertionCommand', - 'sendAssertionCommand', - ]; - - await this.commandExecutor.add({ - name: commandSequence[0], - sequence: commandSequence.slice(1), - delay: 0, - data: { - documentPath, handlerId, method, isTelemetry, operationId, - }, - transactional: false, - }); - this.logger.emit({ - msg: 'Finished measuring execution of generate metadata', - Event_name: 'publish_generate_metadata_end', - Operation_name: 'publish_generate_metadata', - Id_operation: operationId, - }); - return assertion; - } catch (e) { - return null; - } - } - - async store(assertion, node) { - // await this.networkService.store(node, topic, {}); - let retries = 0; - let response = await this.networkService.sendMessage( - constants.NETWORK_PROTOCOLS.STORE, - assertion, - node, - ); - while ( - response === constants.NETWORK_RESPONSES.BUSY - && retries < constants.STORE_MAX_RETRIES - ) { - retries += 1; - await sleep.sleep(constants.STORE_BUSY_REPEAT_INTERVAL_IN_MILLS); - response = await this.networkService.sendMessage( - constants.NETWORK_PROTOCOLS.STORE, - assertion, - node, - ); - } - - return response; - } - - async handleStore(data) { - if (!data || data.rdf) return false; - if (this.dataService.isNodeBusy(constants.BUSYNESS_LIMITS.HANDLE_STORE)) { - return constants.NETWORK_RESPONSES.BUSY; - } - - const operationId = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of handle store command', - Event_name: 'handle_store_start', - Operation_name: 'handle_store', - Id_operation: operationId, - }); - - try { - const { jsonld, nquads } = await this.dataService.createAssertion(data.nquads); - const status = await this.dataService.verifyAssertion(jsonld, nquads); - - // todo check root hash on the blockchain - if (status) { - await this.dataService.insert(data.nquads.join('\n'), `${constants.DID_PREFIX}:${data.id}`); - this.logger.info(`Assertion ${data.id} has been successfully inserted`); - } - - this.logger.emit({ - msg: 'Finished measuring execution of handle store command', - Event_name: 'handle_store_end', - Operation_name: 'handle_store', - Id_operation: operationId, - }); - - return status; - } catch (e) { - this.logger.emit({ - msg: 'Finished measuring execution of handle store command', - Event_name: 'handle_store_end', - Operation_name: 'handle_store', - Id_operation: operationId, - }); - this.logger.error({ - msg: `Error while handling store: ${e} - ${e.stack}`, - Operation_name: 'Error', - Event_name: constants.ERROR_TYPE.HANDLE_STORE_ERROR, - Id_operation: operationId, - }); - return false; - } - } -} - -module.exports = PublishService; diff --git a/modules/service/query-service.js b/modules/service/query-service.js deleted file mode 100644 index 239bfc069..000000000 --- a/modules/service/query-service.js +++ /dev/null @@ -1,337 +0,0 @@ -const { v1: uuidv1 } = require('uuid'); -const constants = require('../constants'); - -class QueryService { - constructor(ctx) { - this.logger = ctx.logger; - this.networkService = ctx.networkService; - this.validationService = ctx.validationService; - this.dataService = ctx.dataService; - this.fileService = ctx.fileService; - this.workerPool = ctx.workerPool; - } - - async resolve(id, load, isAssetRequested, node, operationId) { - const resolvePromise = new Promise(async (resolve, reject) => { - const timer = setTimeout(() => { - resolve(null); - }, constants.RESOLVE_MAX_TIME_MILLIS); - - const result = await this.networkService.sendMessage( - constants.NETWORK_PROTOCOLS.RESOLVE, - id, - node, - ); - clearTimeout(timer); - resolve(result); - }); - - this.logger.emit({ - msg: 'Started measuring execution of resolve fetch from nodes', - Event_name: 'resolve_fetch_from_nodes_start', - Operation_name: 'resolve_fetch_from_nodes', - Id_operation: operationId, - }); - - const result = await resolvePromise; - - this.logger.emit({ - msg: 'Finished measuring execution of resolve fetch from nodes', - Event_name: 'resolve_fetch_from_nodes_end', - Operation_name: 'resolve_fetch_from_nodes', - Id_operation: operationId, - }); - if (!result - || (Array.isArray(result) && result[0] === constants.NETWORK_RESPONSES.ACK) - || result === constants.NETWORK_RESPONSES.BUSY) { - return null; - } - - const rawNquads = result.nquads ? result.nquads : result; - this.logger.emit({ - msg: 'Started measuring execution of create assertion from nquads', - Event_name: 'resolve_create_assertion_from_nquads_start', - Operation_name: 'resolve_create_assertion_from_nquads', - Id_operation: operationId, - }); - - const assertion = await this.dataService.createAssertion(rawNquads); - - this.logger.emit({ - msg: 'Finished measuring execution of create assertion from nquads', - Event_name: 'resolve_create_assertion_from_nquads_end', - Operation_name: 'resolve_create_assertion_from_nquads', - Id_operation: operationId, - }); - - this.logger.emit({ - msg: 'Started measuring execution of resolve verify assertion', - Event_name: 'resolve_verify_assertion_start', - Operation_name: 'resolve_verify_assertion', - Id_operation: operationId, - }); - - const status = await this.dataService.verifyAssertion( - assertion.jsonld, - assertion.nquads, - { isAsset: isAssetRequested }, - ); - - this.logger.emit({ - msg: 'Finished measuring execution of resolve verify assertion', - Event_name: 'resolve_verify_assertion_end', - Operation_name: 'resolve_verify_assertion', - Id_operation: operationId, - }); - - if (status && load) { - await this.dataService.insert(rawNquads.join('\n'), `${constants.DID_PREFIX}:${assertion.jsonld.metadata.id}`); - this.logger.info(`Assertion ${assertion.jsonld.metadata.id} has been successfully inserted`); - } - return status ? assertion : null; - } - - async handleResolve(id) { - if (this.dataService.isNodeBusy(constants.BUSYNESS_LIMITS.HANDLE_RESOLVE)) { - return constants.NETWORK_RESPONSES.BUSY; - } - - const operationId = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of handle resolve command', - Event_name: 'handle_resolve_start', - Operation_name: 'handle_resolve', - Id_operation: operationId, - }); - - const nquads = await this.dataService.resolve(id); - if (nquads) { - this.logger.info(`Number of n-quads retrieved from the database is ${nquads.length}`); - } - - this.logger.emit({ - msg: 'Finished measuring execution of handle resolve command', - Event_name: 'handle_resolve_end', - Operation_name: 'handle_resolve', - Id_operation: operationId, - }); - - if (!nquads) { - return null; - } - return nquads; - } - - async search(data, node) { - const result = await this.networkService.sendMessage( - constants.NETWORK_PROTOCOLS.SEARCH, - data, - node, - ); - return result; - } - - async handleSearch(request) { - if (this.dataService.isNodeBusy(constants.BUSYNESS_LIMITS.HANDLE_SEARCH_ENTITIES)) { - return constants.NETWORK_RESPONSES.BUSY; - } - - const operationId = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of handle search command', - Event_name: 'handle_search_start', - Operation_name: 'handle_search', - Id_operation: operationId, - }); - - const { - query, - issuers, - types, - prefix, - limit, - handlerId, - } = request; - const response = await this.dataService.searchByQuery(query, { - issuers, - types, - prefix, - limit, - }); - - this.logger.emit({ - msg: 'Finished measuring execution of handle search command', - Event_name: 'handle_search_end', - Operation_name: 'handle_search', - Id_operation: operationId, - }); - - return { response, handlerId }; - } - - async handleSearchResult(request) { - if (request === constants.NETWORK_RESPONSES.BUSY) { - return false; - } - - // TODO: add mutex - const operationId = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of handle search result command', - Event_name: 'handle_search_result_start', - Operation_name: 'handle_search_result', - Id_operation: operationId, - }); - - const { handlerId, response } = request; - - const documentPath = this.fileService.getHandlerIdDocumentPath(handlerId); - const handlerData = await this.fileService.loadJsonFromFile(documentPath); - - for (const assertion of response) { - if (!assertion || !assertion.nquads) { - continue; - } - - const rawNquads = assertion.nquads ? assertion.nquads : assertion.rdf; - const { jsonld } = await this.dataService.createAssertion(rawNquads); - let object = handlerData.find( - (x) => x.type === jsonld.metadata.type && x.id === jsonld.metadata.UALs[0], - ); - if (!object) { - object = { - type: jsonld.metadata.type, - id: jsonld.metadata.UALs[0], - timestamp: jsonld.metadata.timestamp, - issuers: [], - assertions: [], - nodes: [assertion.node], - }; - handlerData.push(object); - } - - if (object.nodes.indexOf(assertion.node) === -1) { - object.nodes.push(assertion.node); - } - - if (object.issuers.indexOf(jsonld.metadata.issuer) === -1) { - object.issuers.push(jsonld.metadata.issuer); - } - - if (object.assertions.indexOf(jsonld.id) === -1) { - object.assertions.push(jsonld.id); - } - if (new Date(object.timestamp) < new Date(jsonld.metadata.timestamp)) { - object.timestamp = jsonld.metadata.timestamp; - } - } - - await this.fileService.writeContentsToFile( - this.fileService.getHandlerIdCachePath(), - handlerId, - await this.workerPool.exec('JSONStringify', [handlerData]), - ); - - this.logger.emit({ - msg: 'Finished measuring execution of handle search result command', - Event_name: 'handle_search_result_end', - Operation_name: 'handle_search_result', - Id_operation: operationId, - }); - - return true; - } - - async searchAssertions(data, node) { - const result = await this.networkService.sendMessage( - constants.NETWORK_PROTOCOLS.SEARCH_ASSERTIONS, - data, - node, - ); - return result; - } - - async handleSearchAssertions(request) { - if (this.dataService.isNodeBusy(constants.BUSYNESS_LIMITS.HANDLE_SEARCH_ASSERTIONS)) { - return constants.NETWORK_RESPONSES.BUSY; - } - - const operationId = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of handle search assertions command', - Event_name: 'handle_search_assertions_start', - Operation_name: 'handle_search_assertions', - Id_operation: operationId, - }); - - const { query, options, handlerId } = request; - const response = await this.dataService.searchAssertions(query, options || {}); - - this.logger.emit({ - msg: 'Finished measuring execution of handle search assertions command', - Event_name: 'handle_search_assertions_end', - Operation_name: 'handle_search_assertions', - Id_operation: operationId, - }); - return { response, handlerId }; - } - - async handleSearchAssertionsResult(request) { - if (request === constants.NETWORK_RESPONSES.BUSY) { - return false; - } - - // TODO: add mutex - const operationId = uuidv1(); - this.logger.emit({ - msg: 'Started measuring execution of handle search assertions result command', - Event_name: 'handle_search_assertions_result_start', - Operation_name: 'handle_search_assertions_result', - Id_operation: operationId, - }); - const { handlerId, response } = request; - - const documentPath = this.fileService.getHandlerIdDocumentPath(handlerId); - const handlerData = await this.fileService.loadJsonFromFile(documentPath); - if (response !== undefined && response.length && handlerData) { - for (const object of response) { - const assertion = handlerData.find((x) => x.id === object.assertionId); - if (assertion) { - if (assertion.nodes.indexOf(object.node) === -1) { - // TODO: is set needed ? - assertion.nodes = [...new Set(assertion.nodes.concat(object.node))]; - } - } else { - if (!object || !object.nquads) { - continue; - } - const rawNquads = object.nquads ? object.nquads : object.rdf; - const assertion = await this.dataService.createAssertion(rawNquads); - - handlerData.push({ - id: assertion.jsonld.id, - metadata: assertion.jsonld.metadata, - signature: assertion.jsonld.signature, - nodes: [object.node], - }); - } - } - - await this.fileService.writeContentsToFile( - this.fileService.getHandlerIdCachePath(), - handlerId, - JSON.stringify(handlerData), - ); - } - - this.logger.emit({ - msg: 'Finished measuring execution of handle search assertions result command', - Event_name: 'handle_search_assertions_result_end', - Operation_name: 'handle_search_assertions_result', - Id_operation: operationId, - }); - return true; - } -} - -module.exports = QueryService; diff --git a/modules/service/ranking-service.js b/modules/service/ranking-service.js deleted file mode 100644 index b982e1fd9..000000000 --- a/modules/service/ranking-service.js +++ /dev/null @@ -1,22 +0,0 @@ -const KadIdentityRanking = require('../../external/kad-identity-ranking-service'); - -class RankingService { - constructor(ctx) { - this.logger = ctx.logger; - } - - initialize() { - // TODO: Initialize array of ranking implementations - this.implementation = new KadIdentityRanking(); - this.implementation.initialize(this.logger); - } - - async rank(nodes, topic, replicationFactor, rankingTypes) { - let rankedNodes = []; - // TODO: Iterate and execute all ranking implementations provided in rankingTypes - rankedNodes = await this.implementation.execute(nodes, topic, replicationFactor); - return rankedNodes; - } -} - -module.exports = RankingService; diff --git a/modules/service/validation-service.js b/modules/service/validation-service.js deleted file mode 100644 index 505e0a818..000000000 --- a/modules/service/validation-service.js +++ /dev/null @@ -1,65 +0,0 @@ -const sortedStringify = require('json-stable-stringify'); -const MarkleValidation = require('../../external/merkle-validation-service'); - -class ValidationService { - constructor(ctx) { - this.config = ctx.config; - this.logger = ctx.logger; - this.constants = ctx.constants; - } - - initialize() { - this.implementation = new MarkleValidation(); - return this.implementation.initialize(this.logger); - } - - getName() { - return this.implementation.getName(); - } - - calculateHash(assertion) { - if (typeof assertion !== 'string' && !(assertion instanceof String)) assertion = sortedStringify(assertion); - return this.implementation.calculateHash(assertion); - } - - calculateRootHash(rdf) { - rdf.sort(); - return this.implementation.calculateRootHash(rdf); - } - - async getProofs(rdf, nquads) { - rdf.sort(); - const tree = this.implementation.getMerkleTree(rdf); - const result = []; - for (let triple of nquads) { - triple = triple.replace(/_:genid(.){37}/gm, '_:$1'); - const index = rdf.indexOf(triple); - const proof = tree.getProof(index); - result.push({ triple, tripleHash: this.implementation.calculateHash(triple), proof }); - } - - return result; - } - - sign(assertionId) { - return this.implementation.sign(assertionId, this.config.blockchain[0].privateKey); - } - - verify(assertionId, signature, issuer) { - return this.implementation.verify(assertionId, signature, issuer); - } - - getIssuer() { - return this.config.blockchain[0].publicKey.toLowerCase(); - } - - createProofs(assertion, triples) { - return this.implementation.createProofs(assertion, triples); - } - - validateProof(triples, proofs, root) { - return this.implementation.validateProof(triples, proofs, root); - } -} - -module.exports = ValidationService; diff --git a/modules/service/watchdog-service.js b/modules/service/watchdog-service.js deleted file mode 100644 index ef0213d6b..000000000 --- a/modules/service/watchdog-service.js +++ /dev/null @@ -1,47 +0,0 @@ -const watchdog = require('watchdog'); - -class WatchdogService { - constructor(ctx) { - this.logger = ctx.logger; - this.config = ctx.config; - this.blockchainService = ctx.blockchainService; - this.dataService = ctx.dataService; - this.networkService = ctx.networkService; - this.services = ['blockchain', 'network', 'data']; - } - - initialize() { - this.food = { data: { initialFeed: true, msg: 'Watchdog started!' }, timeout: 2 * 60 * 1000 }; - this.dog = new watchdog.Watchdog(); - - this.dog.on('reset', async () => { - const aliveServices = {}; - for (const service of this.services) { - aliveServices[`${service}ServiceAlive`] = await this[`${service}Service`].healthCheck(); - } - - this.food.data = aliveServices; - this.food.timeout = 5 * 1000; - - this.dog.feed(this.food); - }); - - this.dog.on('feed', (response) => { - if (!response.data.initialFeed) { - this.logger.info(`Service status:${JSON.stringify(response.data)}`); - for (const service of this.services) { - if (!response.data[`${service}ServiceAlive`]) { - this[`${service}Service`].restartService(); - } - } - } else { - this.logger.info(`${response.data.msg}`); - } - }); - - // Initial feeding - this.dog.feed(this.food); - } -} - -module.exports = WatchdogService; diff --git a/modules/utilities.js b/modules/utilities.js deleted file mode 100644 index 98f814c9b..000000000 --- a/modules/utilities.js +++ /dev/null @@ -1,40 +0,0 @@ -const { sha256 } = require('multiformats/hashes/sha2'); -const { Record } = require('libp2p-record'); - -/** - * Creates a DHT ID by hashing a given Uint8Array. - * - * @param {Uint8Array} buf - * @returns {Promise} - */ -exports.convertBuffer = async (buf) => (await sha256.digest(buf)).digest; - -/** - * Create a new put record, encodes and signs it if enabled. - * - * @param {Uint8Array} key - * @param {Uint8Array} value - * @returns {Uint8Array} - */ -exports.createPutRecord = (key, value) => { - const timeReceived = new Date(); - const rec = new Record(key, value, timeReceived); - - return rec.serialize(); -}; - -exports.isArrayOfStrings = (arr) => { - try { - const bodyAssets = JSON.parse(arr.toLowerCase()); - if (!(Array.isArray(bodyAssets)) | !(bodyAssets.length > 0) | !bodyAssets.every((i) => (typeof i === 'string')) | bodyAssets[0] === '') { - return false; - } - } catch (e) { - return false; - } - return true; -}; - -class Utilities { - -} diff --git a/ot-node.js b/ot-node.js index 330eb3d59..ddd0f7cf6 100644 --- a/ot-node.js +++ b/ot-node.js @@ -1,26 +1,26 @@ -const { execSync } = require('child_process'); const DeepExtend = require('deep-extend'); const rc = require('rc'); const fs = require('fs'); const queue = require('fastq'); const appRootPath = require('app-root-path'); const path = require('path'); -const DependencyInjection = require('./modules/service/dependency-injection'); -const Logger = require('./modules/logger/logger'); -const constants = require('./modules/constants'); +const EventEmitter = require('events'); +const DependencyInjection = require('./src/service/dependency-injection'); +const Logger = require('./src/logger/logger'); +const constants = require('./src/constants/constants'); const pjson = require('./package.json'); const configjson = require('./config/config.json'); -const M1FolderStructureInitialMigration = require('./modules/migration/m1-folder-structure-initial-migration'); -const FileService = require('./modules/service/file-service'); +const FileService = require('./src/service/file-service'); class OTNode { constructor(config) { this.initializeConfiguration(config); - this.logger = new Logger(this.config.logLevel, this.config.telemetryHub.enabled); + this.logger = new Logger(this.config.logLevel, this.config.telemetry.enabled); + this.checkNodeVersion(); } async start() { - await this.runFolderStructureInitialMigration(); + await this.removeUpdateFile(); this.logger.info(' ██████╗ ████████╗███╗ ██╗ ██████╗ ██████╗ ███████╗'); this.logger.info('██╔═══██╗╚══██╔══╝████╗ ██║██╔═══██╗██╔══██╗██╔════╝'); @@ -35,24 +35,29 @@ class OTNode { this.logger.info(`Node is running in ${process.env.NODE_ENV} environment`); this.initializeDependencyContainer(); + this.initializeEventEmitter(); + await this.initializeModules(); - await this.initializeDataModule(); - await this.initializeOperationalDbModule(); - await this.initializeValidationModule(); - await this.initializeBlockchainModule(); - await this.initializeNetworkModule(); + await this.saveNetworkModulePeerIdAndPrivKey(); + await this.createProfiles(); + + await this.initializeControllers(); await this.initializeCommandExecutor(); - await this.initializeTelemetryHubModule(); - await this.initializeRpcModule(); - // await this.initializeWatchdog(); + await this.initializeTelemetryInjectionService(); + + this.logger.info('Node is up and running!'); } - async runFolderStructureInitialMigration() { - const m1FolderStructureInitialMigration = new M1FolderStructureInitialMigration( - this.logger, - this.config, - ); - return m1FolderStructureInitialMigration.run(); + checkNodeVersion() { + const nodeMajorVersion = process.versions.node.split('.')[0]; + this.logger.warn('======================================================'); + this.logger.warn(`Using node.js version: ${process.versions.node}`); + if (nodeMajorVersion < constants.MIN_NODE_VERSION) { + this.logger.warn( + `This node was tested with node.js version 16. To make sure that your node is running properly please update your node version!`, + ); + } + this.logger.warn('======================================================'); } initializeConfiguration(userConfig) { @@ -67,23 +72,6 @@ class OTNode { // set default user configuration filename this.config.configFilename = '.origintrail_noderc'; } - if ( - !this.config.blockchain[0].hubContractAddress && - this.config.blockchain[0].networkId === defaultConfig.blockchain[0].networkId - ) { - this.config.blockchain[0].hubContractAddress = - configjson[process.env.NODE_ENV].blockchain[0].hubContractAddress; - } - - const fileService = new FileService({ config: this.config }); - - const updateFilePath = fileService.getUpdateFilePath(); - if (fs.existsSync(updateFilePath)) { - this.config.otNodeUpdated = true; - fileService.removeFile(updateFilePath).catch((error) => { - this.logger.warn(`Unable to remove update file. Error: ${error}`); - }); - } } initializeDependencyContainer() { @@ -109,98 +97,90 @@ class OTNode { await Promise.all(initializationPromises); this.logger.info(`All modules initialized!`); } catch (e) { - this.logger.error({ - msg: `Module initialization failed. Error message: ${e.message}`, - Event_name: constants.ERROR_TYPE.MODULE_INITIALIZATION_ERROR, - }); + this.logger.error(`Module initialization failed. Error message: ${e.message}`); process.exit(1); } } - async initializeDataModule() { + initializeEventEmitter() { + const eventEmitter = new EventEmitter(); + DependencyInjection.registerValue(this.container, 'eventEmitter', eventEmitter); + + this.logger.info('Event emitter initialized'); + } + + async initializeControllers() { try { - const dataService = this.container.resolve('dataService'); - await dataService.initialize(); - this.logger.info(`Data module: ${dataService.getName()} implementation`); + this.logger.info('Initializing http api router'); + const httpApiRouter = this.container.resolve('httpApiRouter'); + await httpApiRouter.initialize(); } catch (e) { - this.logger.error({ - msg: `Data module initialization failed. Error message: ${e.message}`, - Event_name: constants.ERROR_TYPE.DATA_MODULE_INITIALIZATION_ERROR, - }); + this.logger.error( + `Http api router initialization failed. Error message: ${e.message}, ${e.stackTrace}`, + ); } - } - async initializeOperationalDbModule() { try { - this.logger.info('Operational database module: sequelize implementation'); - // eslint-disable-next-line global-require - const db = require('./models'); - - if (this.config.otNodeUpdated) { - execSync(`npx sequelize --config=./config/sequelizeConfig.js db:migrate`); - } - - await db.sequelize.sync(); + this.logger.info('Initializing rpc router'); + const rpcRouter = this.container.resolve('rpcRouter'); + await rpcRouter.initialize(); } catch (e) { - this.logger.error({ - msg: `Operational database module initialization failed. Error message: ${e.message}`, - Event_name: constants.ERROR_TYPE.OPERATIONALDB_MODULE_INITIALIZATION_ERROR, - }); + this.logger.error( + `RPC router initialization failed. Error message: ${e.message}, ${e.stackTrace}`, + ); } } - async initializeNetworkModule() { - try { - const networkService = this.container.resolve('networkService'); - const result = await networkService.initialize(); - - this.config.network.peerId = result.peerId; - if ( - !this.config.network.privateKey && - this.config.network.privateKey !== result.privateKey - ) { - this.config.network.privateKey = result.privateKey; - if (process.env.NODE_ENV !== 'development' && process.env.NODE_ENV !== 'test') { - this.savePrivateKeyInUserConfigurationFile(result.privateKey); + async createProfiles() { + const blockchainModuleManager = this.container.resolve('blockchainModuleManager'); + const createProfilesPromises = blockchainModuleManager + .getImplementationsNames() + .map(async (blockchain) => { + try { + if (!blockchainModuleManager.identityExists(blockchain)) { + this.logger.info(`Creating blockchain identity on network: ${blockchain}`); + const networkModuleManager = this.container.resolve('networkModuleManager'); + const peerId = networkModuleManager.getPeerId(); + await blockchainModuleManager.deployIdentity(blockchain); + this.logger.info(`Creating profile on network: ${blockchain}`); + await blockchainModuleManager.createProfile(blockchain, peerId); + if ( + process.env.NODE_ENV !== 'development' && + process.env.NODE_ENV !== 'test' + ) { + await this.saveIdentityInUserConfigurationFile( + blockchainModuleManager.getIdentity(blockchain), + blockchain, + ); + } + } + this.logger.info( + `${blockchain} blockchain identity is ${blockchainModuleManager.getIdentity( + blockchain, + )}`, + ); + } catch (error) { + this.logger.warn( + `Unable to create ${blockchain} blockchain profile. Removing implementation.`, + ); + blockchainModuleManager.removeImplementation(blockchain); } - } - - const rankingService = this.container.resolve('rankingService'); - await rankingService.initialize(); - this.logger.info(`Network module: ${networkService.getName()} implementation`); - } catch (e) { - this.logger.error({ - msg: `Network module initialization failed. Error message: ${e.message}`, - Event_name: constants.ERROR_TYPE.NETWORK_INITIALIZATION_ERROR, }); - } - } - async initializeValidationModule() { - try { - const validationService = this.container.resolve('validationService'); + await Promise.all(createProfilesPromises); - await validationService.initialize(); - this.logger.info(`Validation module: ${validationService.getName()} implementation`); - } catch (e) { - this.logger.error({ - msg: `Validation module initialization failed. Error message: ${e.message}`, - Event_name: constants.ERROR_TYPE.VALIDATION_INITIALIZATION_ERROR, - }); + if (!blockchainModuleManager.getImplementationsNames().length) { + this.logger.info(`Unable to create blockchain profiles. OT-node shutting down...`); + process.exit(1); } } - async initializeBlockchainModule() { - try { - const blockchainService = this.container.resolve('blockchainService'); + async saveNetworkModulePeerIdAndPrivKey() { + const networkModuleManager = this.container.resolve('networkModuleManager'); + const privateKey = networkModuleManager.getPrivateKey(); - await blockchainService.initialize(); - this.logger.info(`Blockchain module: ${blockchainService.getName()} implementation`); - } catch (e) { - this.logger.error({ - msg: `Blockchain module initialization failed. Error message: ${e.message}`, - Event_name: constants.ERROR_TYPE.BLOCKCHAIN_INITIALIZATION_ERROR, - }); + if (process.env.NODE_ENV !== 'development' && process.env.NODE_ENV !== 'test') { + await this.savePrivateKeyAndPeerIdInUserConfigurationFile(privateKey); } } @@ -211,37 +191,25 @@ class OTNode { commandExecutor.replay(); await commandExecutor.start(); } catch (e) { - this.logger.error({ - msg: `Command executor initialization failed. Error message: ${e.message}`, - Event_name: constants.ERROR_TYPE.COMMAND_EXECUTOR_INITIALIZATION_ERROR, - }); - } - } - - async initializeRpcModule() { - try { - const rpcController = this.container.resolve('rpcController'); - await rpcController.initialize(); - } catch (e) { - this.logger.error({ - msg: `RPC service initialization failed. Error message: ${e.message}`, - Event_name: constants.ERROR_TYPE.RPC_INITIALIZATION_ERROR, - }); + this.logger.error( + `Command executor initialization failed. Error message: ${e.message}`, + ); } } - async initializeTelemetryHubModule() { - try { - const telemetryHubModuleManager = this.container.resolve('telemetryHubModuleManager'); - if (telemetryHubModuleManager.initialize(this.config.telemetryHub, this.logger)) { - this.logger.info( - `Telemetry hub module initialized successfully, using ${telemetryHubModuleManager.config.telemetryHub.packages} package(s)`, + async initializeTelemetryInjectionService() { + if (this.config.telemetry.enabled) { + try { + const telemetryHubModuleManager = this.container.resolve( + 'telemetryInjectionService', + ); + telemetryHubModuleManager.initialize(); + this.logger.info('Telemetry Injection Service initialized successfully'); + } catch (e) { + this.logger.error( + `Telemetry hub module initialization failed. Error message: ${e.message}`, ); } - } catch (e) { - this.logger.error( - `Telemetry hub module initialization failed. Error message: ${e.message}`, - ); } } @@ -255,11 +223,64 @@ class OTNode { } } - savePrivateKeyInUserConfigurationFile(privateKey) { + async savePrivateKeyAndPeerIdInUserConfigurationFile(privateKey) { const configurationFilePath = path.join(appRootPath.path, '..', this.config.configFilename); - const configFile = JSON.parse(fs.readFileSync(configurationFilePath)); - configFile.network.privateKey = privateKey; - fs.writeFileSync(configurationFilePath, JSON.stringify(configFile, null, 2)); + const configFile = JSON.parse(await fs.promises.readFile(configurationFilePath)); + + if (!configFile.modules.network) { + configFile.modules.network = { + implementation: { + 'libp2p-service': { + config: {}, + }, + }, + }; + } else if (!configFile.modules.network.implementation) { + configFile.modules.network.implementation = { + 'libp2p-service': { + config: {}, + }, + }; + } else if (!configFile.modules.network.implementation['libp2p-service']) { + configFile.modules.network.implementation['libp2p-service'] = { + config: {}, + }; + } + if (!configFile.modules.network.implementation['libp2p-service'].config.privateKey) { + configFile.modules.network.implementation['libp2p-service'].config.privateKey = + privateKey; + await fs.promises.writeFile(configurationFilePath, JSON.stringify(configFile, null, 2)); + } + } + + async saveIdentityInUserConfigurationFile(identity, blockchain) { + const configurationFilePath = path.join(appRootPath.path, '..', this.config.configFilename); + const configFile = JSON.parse(await fs.promises.readFile(configurationFilePath)); + if ( + configFile.modules.blockchain && + configFile.modules.blockchain.implementation && + configFile.modules.blockchain.implementation[blockchain] && + configFile.modules.blockchain.implementation[blockchain].config + ) { + if (!configFile.modules.blockchain.implementation[blockchain].config.identity) { + configFile.modules.blockchain.implementation[blockchain].config.identity = identity; + await fs.promises.writeFile( + configurationFilePath, + JSON.stringify(configFile, null, 2), + ); + } + } + } + + async removeUpdateFile() { + const fileService = new FileService({ config: this.config, logger: this.logger }); + const updateFilePath = fileService.getUpdateFilePath(); + if (await fileService.fileExists(updateFilePath)) { + this.config.otNodeUpdated = true; + await fileService.removeFile(updateFilePath).catch((error) => { + this.logger.warn(`Unable to remove update file. Error: ${error}`); + }); + } } stop() { diff --git a/package-lock.json b/package-lock.json index d69c53278..8004f3a04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,23 +1,30 @@ { "name": "origintrail_node", - "version": "6.0.0-beta.1.37", + "version": "6.0.0-beta.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "origintrail_node", - "version": "6.0.0-beta.1.37", + "version": "6.0.0-beta.2.0", "license": "ISC", "dependencies": { "@comunica/query-sparql": "^2.2.1", + "@polkadot/api": "^9.2.1", + "@polkadot/keyring": "^10.1.4", "app-root-path": "^3.0.0", + "assertion-tools": "^1.0.7", + "async": "^3.2.4", + "async-mutex": "^0.3.2", "awilix": "^5.0.1", "axios": "^0.24.0", "big-number": "^2.0.0", "bl": "^5.0.0", - "bn": "^1.0.5", + "bn.js": "^5.2.1", + "cors": "^2.8.5", "crypto-js": "^4.1.1", "deep-extend": "^0.6.0", + "dkg-evm-module": "^1.0.1", "dotenv": "^10.0.0", "elliptic": "^6.5.4", "express": "^4.17.1", @@ -28,22 +35,29 @@ "fast-sort": "^3.1.1", "fastq": "^1.13.0", "fs-extra": "^10.0.0", - "graphdb": "^2.0.0", + "graphdb": "^2.0.2", + "ip": "^1.1.8", "it-concat": "^2.0.0", "it-length-prefixed": "^5.0.3", + "it-map": "^1.0.6", "it-pipe": "^1.1.0", "js-sha3": "^0.8.0", "json-2-csv": "^3.14.4", "json-stable-stringify": "^1.0.1", "jsonld": "^5.2.0", + "jsonschema": "^1.4.1", + "jsonwebtoken": "^8.5.1", + "keccak256": "^1.0.6", "libp2p": "^0.32.4", "libp2p-bootstrap": "^0.13.0", "libp2p-kad-dht": "^0.24.2", - "libp2p-mplex": "^0.10.4", + "libp2p-mplex": "^0.10.7", "libp2p-noise": "^4.0.0", "libp2p-record": "^0.10.5", "libp2p-tcp": "^0.17.2", "merkle-tools": "^1.4.1", + "merkletreejs": "^0.2.32", + "ms": "^2.1.3", "multiformats": "^9.4.7", "mysql2": "^2.3.3", "n3": "^1.12.2", @@ -60,10 +74,10 @@ "sequelize": "^6.9.0", "sequelize-cli": "^6.3.0", "simple-git": "^3.6.0", - "sleep-async": "^1.0.5", "split": "^1.0.1", "streaming-iterables": "^6.0.0", "toobusy-js": "^0.5.1", + "uint8arrays": "^3.0.0", "underscore": "^1.13.1", "unzipper": "^0.10.11", "uuid": "^8.3.2", @@ -76,6 +90,11 @@ "@babel/core": "^7.15.5", "@babel/eslint-parser": "^7.16.5", "@cucumber/cucumber": "^8.0.0-rc.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/wallet": "^5.6.2", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "dkg.js": "^6.0.0-beta.2.7", @@ -93,6 +112,7 @@ "openzeppelin-solidity": "3.4.2", "prettier": "^2.6.2", "request": "^2.88.2", + "sinon": "^14.0.0", "slugify": "^1.6.5", "solc": "0.7.6" }, @@ -110,10 +130,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true, + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", "engines": { "node": ">=6.9.0" } @@ -122,7 +141,6 @@ "version": "7.15.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -152,7 +170,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, "dependencies": { "@babel/highlight": "^7.14.5" }, @@ -164,7 +181,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -179,7 +195,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -215,7 +230,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4", "jsesc": "^2.5.1", @@ -226,14 +240,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -247,7 +260,30 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "bin": { "semver": "bin/semver.js" } @@ -256,7 +292,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, "dependencies": { "@babel/helper-get-function-arity": "^7.15.4", "@babel/template": "^7.15.4", @@ -270,7 +305,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4" }, @@ -282,7 +316,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4" }, @@ -294,7 +327,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4" }, @@ -303,12 +335,11 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -318,7 +349,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", @@ -337,7 +367,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4" }, @@ -345,11 +374,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-replace-supers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, "dependencies": { "@babel/helper-member-expression-to-functions": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", @@ -364,7 +400,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4" }, @@ -376,7 +411,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, "dependencies": { "@babel/types": "^7.15.4" }, @@ -384,19 +418,26 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "engines": { "node": ">=6.9.0" } @@ -405,7 +446,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dev": true, "dependencies": { "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", @@ -453,7 +493,6 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -461,12 +500,37 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "dev": true, - "peer": true, + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -492,7 +556,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.15.4", @@ -506,7 +569,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, "dependencies": { "@babel/highlight": "^7.14.5" }, @@ -518,7 +580,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -538,7 +599,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, "dependencies": { "@babel/highlight": "^7.14.5" }, @@ -550,18 +610,17 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2893,43 +2952,53 @@ } }, "node_modules/@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", "dependencies": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.5" } }, "node_modules/@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", "dependencies": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" } }, "node_modules/@ethersproject/abi": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", - "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.4.tgz", + "integrity": "sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "dependencies": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/hash": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" } }, "node_modules/@ethersproject/abstract-provider": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz", - "integrity": "sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", + "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", "funding": [ { "type": "individual", @@ -2941,19 +3010,19 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0" + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1" } }, "node_modules/@ethersproject/abstract-signer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz", - "integrity": "sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", + "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", "funding": [ { "type": "individual", @@ -2965,17 +3034,17 @@ } ], "dependencies": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0" + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" } }, "node_modules/@ethersproject/address": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", - "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", "funding": [ { "type": "individual", @@ -2987,17 +3056,17 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/rlp": "^5.4.0" + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" } }, "node_modules/@ethersproject/base64": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", - "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", + "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", "funding": [ { "type": "individual", @@ -3009,13 +3078,33 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0" + "@ethersproject/bytes": "^5.6.1" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz", + "integrity": "sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/properties": "^5.6.0" } }, "node_modules/@ethersproject/bignumber": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.2.tgz", - "integrity": "sha512-oIBDhsKy5bs7j36JlaTzFgNPaZjiNDOXsdSgSpXRucUl+UA6L/1YLlFeI3cPAoodcenzF4nxNPV13pcy7XbWjA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", + "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", "funding": [ { "type": "individual", @@ -3027,15 +3116,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "bn.js": "^4.11.9" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^5.2.1" } }, "node_modules/@ethersproject/bytes": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", - "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", + "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", "funding": [ { "type": "individual", @@ -3047,13 +3136,13 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.6.0" } }, "node_modules/@ethersproject/constants": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", - "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", + "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", "funding": [ { "type": "individual", @@ -3065,13 +3154,13 @@ } ], "dependencies": { - "@ethersproject/bignumber": "^5.4.0" + "@ethersproject/bignumber": "^5.6.2" } }, "node_modules/@ethersproject/hash": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", - "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", + "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", "funding": [ { "type": "individual", @@ -3083,20 +3172,87 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" } }, + "node_modules/@ethersproject/hdnode": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz", + "integrity": "sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz", + "integrity": "sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, "node_modules/@ethersproject/keccak256": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", - "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", + "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", "funding": [ { "type": "individual", @@ -3108,19 +3264,14 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "js-sha3": "0.5.7" + "@ethersproject/bytes": "^5.6.1", + "js-sha3": "0.8.0" } }, - "node_modules/@ethersproject/keccak256/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - }, "node_modules/@ethersproject/logger": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.1.tgz", - "integrity": "sha512-DZ+bRinnYLPw1yAC64oRl0QyVZj43QeHIhVKfD/+YwSz4wsv1pfwb5SOFjz+r710YEWzU6LrhuSjpSO+6PeE4A==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", + "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==", "funding": [ { "type": "individual", @@ -3133,9 +3284,28 @@ ] }, "node_modules/@ethersproject/networks": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.2.tgz", - "integrity": "sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.4.tgz", + "integrity": "sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz", + "integrity": "sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==", + "dev": true, "funding": [ { "type": "individual", @@ -3147,13 +3317,14 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/sha2": "^5.6.1" } }, "node_modules/@ethersproject/properties": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.1.tgz", - "integrity": "sha512-cyCGlF8wWlIZyizsj2PpbJ9I7rIlUAfnHYwy/T90pdkSn/NFTa5YWZx2wTJBe9V7dD65dcrrEMisCRUJiq6n3w==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", + "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", "funding": [ { "type": "individual", @@ -3165,13 +3336,53 @@ } ], "dependencies": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz", + "integrity": "sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" } }, "node_modules/@ethersproject/rlp": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", - "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", + "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz", + "integrity": "sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==", + "dev": true, "funding": [ { "type": "individual", @@ -3183,14 +3394,15 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "hash.js": "1.1.7" } }, "node_modules/@ethersproject/signing-key": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", - "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", + "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", "funding": [ { "type": "individual", @@ -3202,18 +3414,18 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "bn.js": "^4.11.9", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "bn.js": "^5.2.1", "elliptic": "6.5.4", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/strings": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", - "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", + "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", "funding": [ { "type": "individual", @@ -3225,15 +3437,42 @@ } ], "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" } }, "node_modules/@ethersproject/transactions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", - "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", + "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz", + "integrity": "sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==", + "dev": true, "funding": [ { "type": "individual", @@ -3245,21 +3484,27 @@ } ], "dependencies": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0" + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/json-wallets": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" } }, "node_modules/@ethersproject/web": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", - "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", + "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", "funding": [ { "type": "individual", @@ -3271,11 +3516,34 @@ } ], "dependencies": { - "@ethersproject/base64": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/base64": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz", + "integrity": "sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" } }, "node_modules/@humanwhocodes/config-array": { @@ -3429,6 +3697,558 @@ "node": ">=10.0.0" } }, + "node_modules/@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@openzeppelin/contracts": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", + "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==" + }, + "node_modules/@polkadot/api": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-9.2.1.tgz", + "integrity": "sha512-5cg47N2BX6PbABYrfJIgA78glqLutN1M88y67UWulj17rM6cYmmi26tlb209zOhNZ7cjBhQDPHN/pbdUiL4zgg==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/api-augment": "9.2.1", + "@polkadot/api-base": "9.2.1", + "@polkadot/api-derive": "9.2.1", + "@polkadot/keyring": "^10.1.4", + "@polkadot/rpc-augment": "9.2.1", + "@polkadot/rpc-core": "9.2.1", + "@polkadot/rpc-provider": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/types-augment": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/types-create": "9.2.1", + "@polkadot/types-known": "9.2.1", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", + "eventemitter3": "^4.0.7", + "rxjs": "^7.5.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/api-augment": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-9.2.1.tgz", + "integrity": "sha512-QetNP5gBtj6DfyJ//5cDNeaEKnd3lsyas9GDw1MqQCxxT0k+6UpLR5JTzeTnTKYSUz7IMIasU/tpunf/2rUuSQ==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/api-base": "9.2.1", + "@polkadot/rpc-augment": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/types-augment": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/api-base": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-9.2.1.tgz", + "integrity": "sha512-slc/NzeON1ZZ97/HaWOJF6j7rWn5yHb+q1BCNpWGZ1MLuKW3R4F8Af0AAIBgvCS223NQ4sHaLUoMAcaPdRcbHg==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/rpc-core": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/util": "^10.1.4", + "rxjs": "^7.5.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/api-derive": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-9.2.1.tgz", + "integrity": "sha512-Vdr6eNaybf22whoHu5fsQe0SsjFFZkvV9GZVczf4gf+lxmZ0GSj634QdBqV/j4l/mvgWgiUqT3b9daTRm5oxiA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/api": "9.2.1", + "@polkadot/api-augment": "9.2.1", + "@polkadot/api-base": "9.2.1", + "@polkadot/rpc-core": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", + "rxjs": "^7.5.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/keyring": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-10.1.4.tgz", + "integrity": "sha512-dCMejp5heZwKSFeO+1vCHFoo1h1KgNvu4AaKQdNxpyr/3eCINrCFI74/qT9XGypblxd61caOpJcMl8B1R/UWFA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/util": "10.1.4", + "@polkadot/util-crypto": "10.1.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "10.1.4", + "@polkadot/util-crypto": "10.1.4" + } + }, + "node_modules/@polkadot/networks": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-10.1.4.tgz", + "integrity": "sha512-5wMwqD+DeVMh29OZZBVkA4DQE9EBsUj5FjmUS2CloA8RzE6SV0qL34zhTwOdq95KJV1OoDbp9aGjCBqhEuozKw==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/util": "10.1.4", + "@substrate/ss58-registry": "^1.25.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-augment": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-9.2.1.tgz", + "integrity": "sha512-ABOLmQPergZJVZB/8YOr0SO/EjZtV4ZzhhgBr/nkX0hLULnjOCAxfFOXqXr7cpa4wjCnIBGkOG3fwVZL2v14FA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/rpc-core": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-9.2.1.tgz", + "integrity": "sha512-4Ns3dbxVESEgjlf1CgpdTTWtRvTdizpJ6NfelbRc8iX7Kg6RMbNeKtPmyRGTzwwMPAoDvNTGSpWmVcN9NscmTQ==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/rpc-augment": "9.2.1", + "@polkadot/rpc-provider": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/util": "^10.1.4", + "rxjs": "^7.5.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-provider": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-9.2.1.tgz", + "integrity": "sha512-tz8dng70BLJfnORwakw412p3d0OQzaeCLybNo8lxiORoZy37xDTNYOrWXGejgc0sePNdWi8ZTLYy3pk2BGU3Vg==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/keyring": "^10.1.4", + "@polkadot/types": "9.2.1", + "@polkadot/types-support": "9.2.1", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", + "@polkadot/x-fetch": "^10.1.4", + "@polkadot/x-global": "^10.1.4", + "@polkadot/x-ws": "^10.1.4", + "@substrate/connect": "0.7.10", + "eventemitter3": "^4.0.7", + "mock-socket": "^9.1.5", + "nock": "^13.2.9" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-9.2.1.tgz", + "integrity": "sha512-Z07fIxLVLQXX1386NVI6ov+5jWo4bUX8m+89tnewuqxvVRUhZI8+s350srFZY0B2FjiA73QsE+/EwGFOHtoZfw==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/keyring": "^10.1.4", + "@polkadot/types-augment": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/types-create": "9.2.1", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", + "rxjs": "^7.5.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-augment": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-9.2.1.tgz", + "integrity": "sha512-NfQxDreOSkD23b8WhZDJDDxYjr7a1S3HUMr8FIg+z6tvPfqTtr4+l78kUFWdSflK+nId+m4h38PuJS9JKEG6uw==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/types": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-codec": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-9.2.1.tgz", + "integrity": "sha512-ChzDKu7Ih1UvDoRyR10Fzu6dnUQcHtoB1XzMNd1oHOv46XUNKpen1JD5uRggoCSYJ38ocAjWnmSgj/VJ+pI8YQ==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/util": "^10.1.4", + "@polkadot/x-bigint": "^10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-create": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-9.2.1.tgz", + "integrity": "sha512-ymAiWKjyGJzgLoOamR6EYrFxLhIMTOF2WWUWKO3/mE3puYqsDEtH5rcU78R/lWEVDxGXSaNqYmjhuEyujpWAUw==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-known": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-9.2.1.tgz", + "integrity": "sha512-q0WOsV3R8kxdsMrlmUYvE+XQ8AwxNCe/PaAufA9ArPtlvumc1K6gbQ16Ik2mHKtuZBHO2EQcwdXl9Yr+pijRzw==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/networks": "^10.1.4", + "@polkadot/types": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/types-create": "9.2.1", + "@polkadot/util": "^10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-support": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-9.2.1.tgz", + "integrity": "sha512-tphkezOtwSW8wnUCr6Pu/sx+IgtzD4c1YC70ans431ZozbxRaT/pcjir4N3Zg6PQJR+zNwHURKHyeOGpuDCg0g==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/util": "^10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-10.1.4.tgz", + "integrity": "sha512-MHz1UxYXuV+XxPl+GR++yOUE0OCiVd+eJBqLgpjpVJNRkudbAmfGAbB2TNR0+76M0fevIeHj4DGEd0gY6vqKLw==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-bigint": "10.1.4", + "@polkadot/x-global": "10.1.4", + "@polkadot/x-textdecoder": "10.1.4", + "@polkadot/x-textencoder": "10.1.4", + "@types/bn.js": "^5.1.0", + "bn.js": "^5.2.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util-crypto": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-10.1.4.tgz", + "integrity": "sha512-6rdUwCdbwmQ0PBWBNYh55RsXAcFjhco/TGLuM7GJ7YufrN9qqv1sr40HlneLbtpiZnfukZ3q/qOpj0h7Hrw2JQ==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@polkadot/networks": "10.1.4", + "@polkadot/util": "10.1.4", + "@polkadot/wasm-crypto": "^6.3.1", + "@polkadot/x-bigint": "10.1.4", + "@polkadot/x-randomvalues": "10.1.4", + "@scure/base": "1.1.1", + "ed2curve": "^0.3.0", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "10.1.4" + } + }, + "node_modules/@polkadot/util-crypto/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/@polkadot/wasm-bridge": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-6.3.1.tgz", + "integrity": "sha512-1TYkHsb9AEFhU9uZj3biEnN2yKQNzdrwSjiTvfCYnt97pnEkKsZI6cku+YPZQv5w/x9CQa5Yua9e2DVVZSivGA==", + "dependencies": { + "@babel/runtime": "^7.18.9" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*", + "@polkadot/x-randomvalues": "*" + } + }, + "node_modules/@polkadot/wasm-crypto": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-6.3.1.tgz", + "integrity": "sha512-OO8h0qeVkqp4xYZaRVl4iuWOEtq282pNBHDKb6SOJuI2g59eWGcKh4EQU9Me2VP6qzojIqptrkrVt7KQXC68gA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/wasm-bridge": "6.3.1", + "@polkadot/wasm-crypto-asmjs": "6.3.1", + "@polkadot/wasm-crypto-init": "6.3.1", + "@polkadot/wasm-crypto-wasm": "6.3.1", + "@polkadot/wasm-util": "6.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*", + "@polkadot/x-randomvalues": "*" + } + }, + "node_modules/@polkadot/wasm-crypto-asmjs": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.3.1.tgz", + "integrity": "sha512-zbombRfA5v/mUWQQhgg2YwaxhRmxRIrvskw65x+lruax3b6xPBFDs7yplopiJU3r8h2pTgQvX/DUksvqz2TCRQ==", + "dependencies": { + "@babel/runtime": "^7.18.9" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*" + } + }, + "node_modules/@polkadot/wasm-crypto-init": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.3.1.tgz", + "integrity": "sha512-9yaUBcu+snwjJLmPPGl3cyGRQ1afyFGm16qzTM0sgG/ZCfUlK4uk8KWZe+sBUKgoxb2oXY7Y4WklKgQI1YBdfw==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/wasm-bridge": "6.3.1", + "@polkadot/wasm-crypto-asmjs": "6.3.1", + "@polkadot/wasm-crypto-wasm": "6.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*", + "@polkadot/x-randomvalues": "*" + } + }, + "node_modules/@polkadot/wasm-crypto-wasm": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.3.1.tgz", + "integrity": "sha512-idSlzKGVzCfeCMRHsacRvqwojSaTadFxL/Dbls4z1thvfa3U9Ku0d2qVtlwg7Hj+tYWDiuP8Kygs+6bQwfs0XA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/wasm-util": "6.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*" + } + }, + "node_modules/@polkadot/wasm-util": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-6.3.1.tgz", + "integrity": "sha512-12oAv5J7Yoc9m6jixrSaQCxpOkWOyzHx3DMC8qmLjRiwdBWxqLmImOVRVnFsbaxqSbhBIHRuJphVxWE+GZETDg==", + "dependencies": { + "@babel/runtime": "^7.18.9" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*" + } + }, + "node_modules/@polkadot/x-bigint": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-10.1.4.tgz", + "integrity": "sha512-qgLetTukFhkxNxNcUWMmnrfE9bp4TNbrqNoVBVH7wqSuEVpDPITBXsQ/78LbaaZGWD80Ew0wGxcZ/rqX+dLVUA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-fetch": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-10.1.4.tgz", + "integrity": "sha512-hVhLpOvx+ys6klkqWJnINi9FU/JcDnc+6cyU9fa+Dum3mqO1XnngOYDO9mpf5HODIwrFNFmohll9diRP+TW0yQ==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4", + "@types/node-fetch": "^2.6.2", + "node-fetch": "^3.2.10" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-fetch/node_modules/data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@polkadot/x-fetch/node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/@polkadot/x-fetch/node_modules/node-fetch": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/@polkadot/x-global": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-10.1.4.tgz", + "integrity": "sha512-67f53H872wHvmjmL96DvhC3dG7gKRG1ghEbHXeFIGwkix+9zGEMV9krYW1+OAvGAuCQZqUIUGiJ7lad4Zjb7wQ==", + "dependencies": { + "@babel/runtime": "^7.18.9" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-randomvalues": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-10.1.4.tgz", + "integrity": "sha512-sfYz3GmyG739anj07Y+8PUX+95upO1zlsADAEfK1w1mMpTw97xEoMZf66CduAQOe43gEwQXc/JuKq794C/Hr7Q==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-textdecoder": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-10.1.4.tgz", + "integrity": "sha512-B8XcAmJLnuppSr4RUNPevh5MH3tWZBwBR0wUsSdIyiGXuncgnkj9jmpbGLgV1tSn+BGxX3SNsRho3/4CNmndWQ==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-textencoder": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-10.1.4.tgz", + "integrity": "sha512-vDpo0rVV4jBmr0L2tCZPZzxmzV2vZhpH1Dw9H7MpmZSPePz4ZF+o4RBJz/ocwQh3+1qV1SKQm7+fj4lPwUZdEw==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-ws": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-10.1.4.tgz", + "integrity": "sha512-hi7hBRRCLlHgqVW2p5TkoJuTxV7sVprl+aAnmcIpPU4J8Ai6PKQvXR+fLK01T8moBYmH5ztHrBWvY/XRzmQ8Vg==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4", + "@types/websocket": "^1.0.5", + "websocket": "^1.0.34" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -3491,14 +4311,122 @@ "@types/node": "*" } }, + "node_modules/@redux-saga/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.0.tgz", + "integrity": "sha512-9n8PeOJT2gyVutH5LUKbCiPFkUZLOM4LWtt5zhbXJa77gzXj9LuEqDj1CVOsfPM0NcHVEhVUQ/Cr++ZZfCNjFg==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@redux-saga/deferred": "^1.2.0", + "@redux-saga/delay-p": "^1.2.0", + "@redux-saga/is": "^1.1.2", + "@redux-saga/symbols": "^1.1.2", + "@redux-saga/types": "^1.2.0", + "redux": "^4.0.4", + "typescript-tuple": "^2.2.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/redux-saga" + } + }, + "node_modules/@redux-saga/core/node_modules/redux": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz", + "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/@redux-saga/deferred": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.2.0.tgz", + "integrity": "sha512-PJrcqMPN/WdmNyJvI1xwPnktaqEd2F3Lc79bRpjupX5zDO+RgLTekuoWv+cgyfGBVW2iaMTEYhUVlZqvCkGAIg==" + }, + "node_modules/@redux-saga/delay-p": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.2.0.tgz", + "integrity": "sha512-neR2QbTZbwNkQ3/LVdltEdfLVyoxmP7OcUys68KgieCuaWBDpfDeXqxkTRz/biCjYqJGezRDgSfTu6wx/44Lfg==", + "dependencies": { + "@redux-saga/symbols": "^1.1.2" + } + }, + "node_modules/@redux-saga/is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@redux-saga/is/-/is-1.1.2.tgz", + "integrity": "sha512-OLbunKVsCVNTKEf2cH4TYyNbbPgvmZ52iaxBD4I1fTif4+MTXMa4/Z07L83zW/hTCXwpSZvXogqMqLfex2Tg6w==", + "dependencies": { + "@redux-saga/symbols": "^1.1.2", + "@redux-saga/types": "^1.1.0" + } + }, + "node_modules/@redux-saga/symbols": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.1.2.tgz", + "integrity": "sha512-EfdGnF423glv3uMwLsGAtE6bg+R9MdqlHEzExnfagXPrIiuxwr3bdiAwz3gi+PsrQ3yBlaBpfGLtDG8rf3LgQQ==" + }, + "node_modules/@redux-saga/types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.2.0.tgz", + "integrity": "sha512-SCZVqXX4l3WwVM58eXFtXabJdxGQKY7hvSToV+xivtPwmutCbhOhgJ53JwKGX3HCBwEkzn4t9WItBQKbzNNxyw==" + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", + "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, "node_modules/@stablelib/aead": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", @@ -3625,1346 +4553,1573 @@ "@stablelib/wipe": "^1.0.1" } }, + "node_modules/@substrate/connect": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.10.tgz", + "integrity": "sha512-WNdW18e0I696/AQjrAXdMD9W8YaKLTcPr2Cu8scSwiUT40in84KEzi+g+P367cE2etAc+Dvu8vNDEQTbUPNqEg==", + "dependencies": { + "@substrate/connect-extension-protocol": "^1.0.1", + "@substrate/smoldot-light": "0.6.27", + "eventemitter3": "^4.0.7" + } + }, + "node_modules/@substrate/connect-extension-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.1.tgz", + "integrity": "sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg==" + }, + "node_modules/@substrate/smoldot-light": { + "version": "0.6.27", + "resolved": "https://registry.npmjs.org/@substrate/smoldot-light/-/smoldot-light-0.6.27.tgz", + "integrity": "sha512-Wy3fbyfZqR3HLynuxeBkUunZsrbqpsmFN+D0/8cVIHZbO7WDwJsmCUc32yO5r+v6s/T97L7FOJHEyMWmRfnKAQ==", + "dependencies": { + "pako": "^2.0.4", + "websocket": "^1.0.32" + } + }, + "node_modules/@substrate/smoldot-light/node_modules/pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, + "node_modules/@substrate/ss58-registry": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.25.0.tgz", + "integrity": "sha512-LmCH4QJRdHaeLsLTPSgJaXguMoIW+Ig9fA9LRPpeya9HefVAJ7gZuUYinldv+QmX7evNm5CL0rspNUS8l1DvXg==" + }, "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dependencies": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=14.16" } }, - "node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "node_modules/@truffle/abi-utils": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.2.16.tgz", + "integrity": "sha512-FCDANbJM5UJ0Mm61Z9MmQ3DVnMCCmMgOSFvGDORyYqHiXdS6uK0n77pN5tuUUCles8YIpgnCdijMWs8HoaRSMw==", "dependencies": { - "@types/node": "*" + "change-case": "3.0.2", + "faker": "5.5.3", + "fast-check": "3.1.1" } }, - "node_modules/@types/concat-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", - "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", - "dev": true, + "node_modules/@truffle/code-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-2.0.0.tgz", + "integrity": "sha512-qvx3MiBbnCgiNeKFnhQ7wpOQMkXz9ca5E72WZAFIxRg+0wYAR+u7e+DXQe88xTjthC2OP3xDNSeYcb57NIU8Pw==", "dependencies": { - "@types/node": "*" + "cbor": "^5.2.0" } }, - "node_modules/@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", - "dev": true, + "node_modules/@truffle/codec": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.1.tgz", + "integrity": "sha512-ULvtciwbdUANe7VNsPCAIWSrxm0CFu145VVVxJ+yE1xHY9TiLKHOf+CBH2sMW3mVkbt5HwVUF5DGm+uXngK19A==", "dependencies": { - "@types/node": "*" + "@truffle/abi-utils": "^0.2.16", + "@truffle/compile-common": "^0.7.33", + "big.js": "^6.0.3", + "bn.js": "^5.1.3", + "cbor": "^5.2.0", + "debug": "^4.3.1", + "lodash": "^4.17.21", + "semver": "7.3.7", + "utf8": "^3.0.0", + "web3-utils": "1.7.4" } }, - "node_modules/@types/http-link-header": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.3.tgz", - "integrity": "sha512-y8HkoD/vyid+5MrJ3aas0FvU3/BVBGcyG9kgxL0Zn4JwstA8CglFPnrR0RuzOjRCXwqzL5uxWC2IO7Ub0rMU2A==", - "dependencies": { - "@types/node": "*" + "node_modules/@truffle/codec/node_modules/big.js": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", + "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bigjs" } }, - "node_modules/@types/json-stable-stringify": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz", - "integrity": "sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true, - "peer": true + "node_modules/@truffle/codec/node_modules/web3-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", + "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", + "dependencies": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/@types/long": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", - "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + "node_modules/@truffle/compile-common": { + "version": "0.7.33", + "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.7.33.tgz", + "integrity": "sha512-LvZhDheDGqb+TScSRSYAFZQBRFEn+2ic/gtJIJXB2Rm1U6cS5GLdvWrEdPPIAwP+xt0xZ4ySI4mw2wBL8MUSRg==", + "dependencies": { + "@truffle/error": "^0.1.0", + "colors": "1.4.0" + } }, - "node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" + "node_modules/@truffle/db-loader": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.1.28.tgz", + "integrity": "sha512-d12zo7iPFCL7tpC0FD8eEianbyBkptN3rj1ySrcneKnDiQCfZlB13rIMyzMWUeYsSmOhL5BaR9CbztVAhLnnOA==", + "optionalDependencies": { + "@truffle/db": "^1.0.18" + } }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + "node_modules/@truffle/debugger": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@truffle/debugger/-/debugger-11.0.4.tgz", + "integrity": "sha512-5xmmApISc8Bm84kLS9BlIB5cA4pQuVze+l5f7UptsvT2bdEdaxIdPBUrTcUcVYkqZzpZVGcFMdIF0Je+Ju3eCw==", + "dependencies": { + "@truffle/abi-utils": "^0.2.16", + "@truffle/codec": "^0.14.1", + "@truffle/source-map-utils": "^1.3.91", + "bn.js": "^5.1.3", + "debug": "^4.3.1", + "json-pointer": "^0.6.1", + "json-stable-stringify": "^1.0.1", + "lodash": "^4.17.21", + "redux": "^3.7.2", + "redux-saga": "1.0.0", + "reselect-tree": "^1.3.7", + "semver": "7.3.7", + "web3": "1.7.4", + "web3-eth-abi": "1.7.4" + } }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + "node_modules/@truffle/debugger/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } }, - "node_modules/@types/n3": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.10.4.tgz", - "integrity": "sha512-FfRTwcbXcScVHuAjIASveRWL6Fi6fPALl1Ge8tMESYLqU7R42LJvtdBpUi+f9YK0oQPqIN+zFFgMDFJfLMx0bg==", + "node_modules/@truffle/debugger/node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "dependencies": { - "@types/node": "*", - "rdf-js": "^4.0.2" + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + "node_modules/@truffle/debugger/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" }, - "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "node_modules/@truffle/debugger/node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dependencies": { - "@types/node": "*" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/readable-stream": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.13.tgz", - "integrity": "sha512-4JSCx8EUzaW9Idevt+9lsRAt1lcSccoQfE+AouM1gk8sFxnnytKNIO3wTl9Dy+4m6jRJ1yXhboLHHT/LXBQiEw==", + "node_modules/@truffle/debugger/node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dependencies": { - "@types/node": "*", - "safe-buffer": "*" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + "node_modules/@truffle/debugger/node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } }, - "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "node_modules/@truffle/debugger/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dependencies": { - "@types/node": "*" + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" - }, - "node_modules/@types/spark-md5": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/spark-md5/-/spark-md5-3.0.2.tgz", - "integrity": "sha512-82E/lVRaqelV9qmRzzJ1PKTpyrpnT7mwdneKNJB9hUtypZDMggloDfFUCIqRRx3lYRxteCwXSq9c+W71Vf0QnQ==" + "node_modules/@truffle/debugger/node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, - "node_modules/@types/sparqljs": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/sparqljs/-/sparqljs-3.1.3.tgz", - "integrity": "sha512-nmFgmR6ns4i8sg9fYu+293H+PMLKmDOZy34sgwgAeUEEiIqSs4guj5aCZRt3gq1g0yuKXkqrxLDq/684g7pGtQ==", + "node_modules/@truffle/debugger/node_modules/eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", "dependencies": { - "rdf-js": "^4.0.2" + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" } }, - "node_modules/@types/uritemplate": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@types/uritemplate/-/uritemplate-0.3.4.tgz", - "integrity": "sha512-1D8mJEeQEXynoPQKJkneIK+tXaM2Qnk6c80RBQPV/O2ToypI4mlqXy5jojnYKjTX2Q+EMNMOWt0wNdLbb2MUpA==" + "node_modules/@truffle/debugger/node_modules/eth-lib/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/@types/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==" + "node_modules/@truffle/debugger/node_modules/eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" }, - "node_modules/@types/xml": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/xml/-/xml-1.0.8.tgz", - "integrity": "sha512-IptEZBtDwSPayCP8FmbordhAdjdxsif4zH29xTbBRacZeCHFHZp8OxyG1/CrS8AS0MziJUPTGWCTKbYtvHGYPg==", + "node_modules/@truffle/debugger/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dependencies": { - "@types/node": "*" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@types/yargs": { - "version": "17.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", - "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "node_modules/@truffle/debugger/node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dependencies": { - "@types/yargs-parser": "*" + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/@vascosantos/moving-average": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz", - "integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==" + "node_modules/@truffle/debugger/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "json-buffer": "3.0.0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true, - "peer": true + "node_modules/@truffle/debugger/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true, - "peer": true + "node_modules/@truffle/debugger/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true, - "peer": true + "node_modules/@truffle/debugger/node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" + "node_modules/@truffle/debugger/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" } }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true, - "peer": true + "node_modules/@truffle/debugger/node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dependencies": { + "lowercase-keys": "^1.0.0" + } }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dependencies": { - "@webassemblyjs/ast": "1.9.0" + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true, - "peer": true + "node_modules/@truffle/debugger/node_modules/uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/web3": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", + "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", + "hasInstallScript": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "web3-bzz": "1.7.4", + "web3-core": "1.7.4", + "web3-eth": "1.7.4", + "web3-eth-personal": "1.7.4", + "web3-net": "1.7.4", + "web3-shh": "1.7.4", + "web3-utils": "1.7.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/web3-bzz": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", + "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", + "hasInstallScript": true, "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/web3-core": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", + "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", "dependencies": { - "@xtuc/long": "4.2.2" + "@types/bn.js": "^5.1.0", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-core-requestmanager": "1.7.4", + "web3-utils": "1.7.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/web3-core-helpers": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz", + "integrity": "sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg==", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "web3-eth-iban": "1.7.4", + "web3-utils": "1.7.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/web3-core-method": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", + "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@ethersproject/transactions": "^5.6.2", + "web3-core-helpers": "1.7.4", + "web3-core-promievent": "1.7.4", + "web3-core-subscriptions": "1.7.4", + "web3-utils": "1.7.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/web3-core-promievent": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz", + "integrity": "sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA==", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "peer": true, + "node_modules/@truffle/debugger/node_modules/web3-core-requestmanager": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", + "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" + "util": "^0.12.0", + "web3-core-helpers": "1.7.4", + "web3-providers-http": "1.7.4", + "web3-providers-ipc": "1.7.4", + "web3-providers-ws": "1.7.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "peer": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/@truffle/debugger/node_modules/web3-core-subscriptions": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", + "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", "dependencies": { - "event-target-shim": "^5.0.0" + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.7.4" }, "engines": { - "node": ">=6.5" + "node": ">=8.0.0" } }, - "node_modules/abortable-iterator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-3.0.0.tgz", - "integrity": "sha512-7KqcPPnMhfot4GrEjK51zesS4Ye/lUCHBgYt3oRxIlU24HO3mVxBwEo9niNyfHqoWKqWLuZTc3zErNomdHA+ag==", - "dependencies": { - "get-iterator": "^1.0.2" + "node_modules/@truffle/debugger/node_modules/web3-eth": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", + "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", + "dependencies": { + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-core-subscriptions": "1.7.4", + "web3-eth-abi": "1.7.4", + "web3-eth-accounts": "1.7.4", + "web3-eth-contract": "1.7.4", + "web3-eth-ens": "1.7.4", + "web3-eth-iban": "1.7.4", + "web3-eth-personal": "1.7.4", + "web3-net": "1.7.4", + "web3-utils": "1.7.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "node_modules/@truffle/debugger/node_modules/web3-eth-abi": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz", + "integrity": "sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg==", "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.7.4" }, "engines": { - "node": ">= 0.6" + "node": ">=8.0.0" } }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" + "node_modules/@truffle/debugger/node_modules/web3-eth-accounts": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", + "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", + "dependencies": { + "@ethereumjs/common": "^2.5.0", + "@ethereumjs/tx": "^3.3.2", + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-util": "^7.0.10", + "scrypt-js": "^3.0.1", + "uuid": "3.3.2", + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-utils": "1.7.4" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=8.0.0" } }, - "node_modules/aes-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", - "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", - "dev": true - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/@truffle/debugger/node_modules/web3-eth-contract": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", + "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@types/bn.js": "^5.1.0", + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-core-promievent": "1.7.4", + "web3-core-subscriptions": "1.7.4", + "web3-eth-abi": "1.7.4", + "web3-utils": "1.7.4" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@truffle/debugger/node_modules/web3-eth-ens": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", + "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-promievent": "1.7.4", + "web3-eth-abi": "1.7.4", + "web3-eth-contract": "1.7.4", + "web3-utils": "1.7.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, + "node_modules/@truffle/debugger/node_modules/web3-eth-iban": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz", + "integrity": "sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w==", "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "bn.js": "^5.2.1", + "web3-utils": "1.7.4" + }, "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, + "node_modules/@truffle/debugger/node_modules/web3-eth-personal": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", + "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", "dependencies": { - "type-fest": "^0.21.3" + "@types/node": "^12.12.6", + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-net": "1.7.4", + "web3-utils": "1.7.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/@truffle/debugger/node_modules/web3-net": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", + "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", + "dependencies": { + "web3-core": "1.7.4", + "web3-core-method": "1.7.4", + "web3-utils": "1.7.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@truffle/debugger/node_modules/web3-providers-http": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", + "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", "dependencies": { - "color-convert": "^1.9.0" + "web3-core-helpers": "1.7.4", + "xhr2-cookies": "1.1.0" }, "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, - "node_modules/any-signal": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", - "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", + "node_modules/@truffle/debugger/node_modules/web3-providers-ipc": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", + "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", "dependencies": { - "abort-controller": "^3.0.0", - "native-abort-controller": "^1.0.3" + "oboe": "2.1.5", + "web3-core-helpers": "1.7.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, + "node_modules/@truffle/debugger/node_modules/web3-providers-ws": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", + "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.7.4", + "websocket": "^1.0.32" }, "engines": { - "node": ">= 8" + "node": ">=8.0.0" } }, - "node_modules/app-root-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", - "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "node_modules/@truffle/debugger/node_modules/web3-shh": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", + "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", + "hasInstallScript": true, + "dependencies": { + "web3-core": "1.7.4", + "web3-core-method": "1.7.4", + "web3-core-subscriptions": "1.7.4", + "web3-net": "1.7.4" + }, "engines": { - "node": ">= 6.0.0" + "node": ">=8.0.0" } }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, + "node_modules/@truffle/debugger/node_modules/web3-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", + "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", "dependencies": { - "default-require-extensions": "^3.0.0" + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true + "node_modules/@truffle/error": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.1.0.tgz", + "integrity": "sha512-RbUfp5VreNhsa2Q4YbBjz18rOQI909pG32bghl1hulO7IpvcqTS+C3Ge5cNbiWQ1WGzy1wIeKLW0tmQtHFB7qg==" }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@truffle/hdwallet-provider": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-1.7.0.tgz", + "integrity": "sha512-nT7BPJJ2jPCLJc5uZdVtRnRMny5he5d3kO9Hi80ZSqe5xlnK905grBptM/+CwOfbeqHKQirI1btwm6r3wIBM8A==", "dependencies": { - "sprintf-js": "~1.0.2" + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "@trufflesuite/web3-provider-engine": "15.0.14", + "eth-sig-util": "^3.0.1", + "ethereum-cryptography": "^0.1.3", + "ethereum-protocol": "^1.0.1", + "ethereumjs-util": "^6.1.0", + "ethereumjs-wallet": "^1.0.1" } }, - "node_modules/args": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/args/-/args-5.0.1.tgz", - "integrity": "sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==", + "node_modules/@truffle/hdwallet-provider/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "dependencies": { - "camelcase": "5.0.0", - "chalk": "2.4.2", - "leven": "2.1.0", - "mri": "1.1.4" - }, - "engines": { - "node": ">= 6.0.0" + "@types/node": "*" } }, - "node_modules/args/node_modules/camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "engines": { - "node": ">=6" - } + "node_modules/@truffle/hdwallet-provider/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/args/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@truffle/hdwallet-provider/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" } }, - "node_modules/args/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" + "node_modules/@truffle/source-map-utils": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@truffle/source-map-utils/-/source-map-utils-1.3.91.tgz", + "integrity": "sha512-TvY7fbix3txDtp58abaGWGHZuKiwajkgFXlOqYBHRJ9fsFdI30fCOMetiDHxcRMKajP2zF0df5cMnAxH5rQsOg==", + "dependencies": { + "@truffle/code-utils": "^2.0.0", + "@truffle/codec": "^0.14.1", + "debug": "^4.3.1", + "json-pointer": "^0.6.1", + "node-interval-tree": "^1.3.3", + "web3-utils": "1.7.4" } }, - "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "peer": true, + "node_modules/@truffle/source-map-utils/node_modules/web3-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", + "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" }, "engines": { - "node": ">=6.0" + "node": ">=8.0.0" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "node_modules/@trufflesuite/eth-json-rpc-filters": { + "version": "4.1.2-1", + "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-filters/-/eth-json-rpc-filters-4.1.2-1.tgz", + "integrity": "sha512-/MChvC5dw2ck9NU1cZmdovCz2VKbOeIyR4tcxDvA5sT+NaL0rA2/R5U0yI7zsbo1zD+pgqav77rQHTzpUdDNJQ==", + "dependencies": { + "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-0", + "await-semaphore": "^0.1.3", + "eth-query": "^2.1.2", + "json-rpc-engine": "^5.1.3", + "lodash.flatmap": "^4.5.0", + "safe-event-emitter": "^1.0.1" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "node_modules/@trufflesuite/eth-json-rpc-infura": { + "version": "4.0.3-0", + "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-infura/-/eth-json-rpc-infura-4.0.3-0.tgz", + "integrity": "sha512-xaUanOmo0YLqRsL0SfXpFienhdw5bpQ1WEXxMTRi57az4lwpZBv4tFUDvcerdwJrxX9wQqNmgUgd1BrR01dumw==", + "dependencies": { + "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-1", + "cross-fetch": "^2.1.1", + "eth-json-rpc-errors": "^1.0.1", + "json-rpc-engine": "^5.1.3" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "node_modules/@trufflesuite/eth-json-rpc-infura/node_modules/cross-fetch": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", + "dependencies": { + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" } }, - "node_modules/array-flatten": { + "node_modules/@trufflesuite/eth-json-rpc-infura/node_modules/eth-json-rpc-errors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz", + "integrity": "sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg==", + "deprecated": "Package renamed: https://www.npmjs.com/package/eth-rpc-errors", + "dependencies": { + "fast-safe-stringify": "^2.0.6" + } + }, + "node_modules/@trufflesuite/eth-json-rpc-middleware": { + "version": "4.4.2-1", + "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.2-1.tgz", + "integrity": "sha512-iEy9H8ja7/8aYES5HfrepGBKU9n/Y4OabBJEklVd/zIBlhCCBAWBqkIZgXt11nBXO/rYAeKwYuE3puH3ByYnLA==", + "dependencies": { + "@trufflesuite/eth-sig-util": "^1.4.2", + "btoa": "^1.2.1", + "clone": "^2.1.1", + "eth-json-rpc-errors": "^1.0.1", + "eth-query": "^2.1.2", + "ethereumjs-block": "^1.6.0", + "ethereumjs-tx": "^1.3.7", + "ethereumjs-util": "^5.1.2", + "ethereumjs-vm": "^2.6.0", + "fetch-ponyfill": "^4.0.0", + "json-rpc-engine": "^5.1.3", + "json-stable-stringify": "^1.0.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "peer": true, + "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", - "dev": true, - "peer": true, + "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/eth-json-rpc-errors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz", + "integrity": "sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg==", + "deprecated": "Package renamed: https://www.npmjs.com/package/eth-rpc-errors", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "fast-safe-stringify": "^2.0.6" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", - "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", - "dev": true, - "peer": true, + "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/arrayify-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arrayify-stream/-/arrayify-stream-2.0.0.tgz", - "integrity": "sha512-Z2NRtxpWQIz3NRA2bEZOziIungBH+fpsFFEolc5u8uVRheYitvsDNvejlfyh/hjZ9VyS9Ba62oY0zc5oa6Wu7g==" + "node_modules/@trufflesuite/eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@trufflesuite/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha512-+GyfN6b0LNW77hbQlH3ufZ/1eCON7mMrGym6tdYf7xiNw9Vv3jBO72bmmos1EId2NgBvPMhmYYm6DSLQFTmzrA==", + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^5.1.1" + } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true + "node_modules/@trufflesuite/eth-sig-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/@trufflesuite/eth-sig-util/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "dependencies": { - "safer-buffer": "~2.1.0" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "node_modules/@trufflesuite/web3-provider-engine": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.14.tgz", + "integrity": "sha512-6/LoWvNMxYf0oaYzJldK2a9AdnkAdIeJhHW4nuUBAeO29eK9xezEaEYQ0ph1QRTaICxGxvn+1Azp4u8bQ8NEZw==", + "dependencies": { + "@ethereumjs/tx": "^3.3.0", + "@trufflesuite/eth-json-rpc-filters": "^4.1.2-1", + "@trufflesuite/eth-json-rpc-infura": "^4.0.3-0", + "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-1", + "@trufflesuite/eth-sig-util": "^1.4.2", + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^4.4.2", + "eth-json-rpc-errors": "^2.0.2", + "ethereumjs-block": "^1.2.2", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" } }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "peer": true, + "node_modules/@trufflesuite/web3-provider-engine/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "lodash": "^4.17.14" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "node_modules/@trufflesuite/web3-provider-engine/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/@trufflesuite/web3-provider-engine/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "engines": { "node": ">=0.8" } }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true, - "peer": true + "node_modules/@trufflesuite/web3-provider-engine/node_modules/cross-fetch": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", + "dependencies": { + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" + } }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "peer": true, + "node_modules/@trufflesuite/web3-provider-engine/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "dependencies": { - "inherits": "2.0.1" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" + "node_modules/@trufflesuite/web3-provider-engine/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/assertion-error-formatter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz", - "integrity": "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==", - "dev": true, + "node_modules/@trufflesuite/web3-provider-engine/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { - "diff": "^4.0.1", - "pad-right": "^0.2.2", - "repeat-string": "^1.6.1" + "safe-buffer": "~5.1.0" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "node_modules/@trufflesuite/web3-provider-engine/node_modules/ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dependencies": { + "async-limiter": "~1.0.0" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "node_modules/@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", "dev": true, - "peer": true + "dependencies": { + "@types/node": "*" + } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "engines": { - "node": ">=8" + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", + "dev": true, + "dependencies": { + "@types/node": "*" } }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, - "node_modules/async-each": { + "node_modules/@types/http-link-header": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.3.tgz", + "integrity": "sha512-y8HkoD/vyid+5MrJ3aas0FvU3/BVBGcyG9kgxL0Zn4JwstA8CglFPnrR0RuzOjRCXwqzL5uxWC2IO7Ub0rMU2A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" + }, + "node_modules/@types/json-stable-stringify": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz", + "integrity": "sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true, - "optional": true, "peer": true }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dependencies": { + "@types/node": "*" + } }, - "node_modules/asynciterator": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.4.0.tgz", - "integrity": "sha512-jFuvnCHjUAyW33E3zpZhQxBM3SDuyxkDwtjhXD27WKwB/7UrZHaDAia7ZbqL94zLbUGhgxhO0vfopTLi7Jcrig==" + "node_modules/@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" }, - "node_modules/asyncjoin": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/asyncjoin/-/asyncjoin-1.0.5.tgz", - "integrity": "sha512-yRNu4POPpxKH/dMW0e6XyXflFaTYZRib3rdVMkJb8Zb2toT7v3ZjTmR5oEPB8vvNfxGwCuiS7fLMZq/uWoOx2Q==", + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, + "node_modules/@types/n3": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.10.4.tgz", + "integrity": "sha512-FfRTwcbXcScVHuAjIASveRWL6Fi6fPALl1Ge8tMESYLqU7R42LJvtdBpUi+f9YK0oQPqIN+zFFgMDFJfLMx0bg==", "dependencies": { - "asynciterator": "^3.2.0" + "@types/node": "*", + "rdf-js": "^4.0.2" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" + "node_modules/@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "peer": true, - "bin": { - "atob": "bin/atob.js" + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 4.5.0" + "node": ">= 6" } }, - "node_modules/atomic-sleep": { + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/readable-stream": { + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.13.tgz", + "integrity": "sha512-4JSCx8EUzaW9Idevt+9lsRAt1lcSccoQfE+AouM1gk8sFxnnytKNIO3wTl9Dy+4m6jRJ1yXhboLHHT/LXBQiEw==", + "dependencies": { + "@types/node": "*", + "safe-buffer": "*" + } + }, + "node_modules/@types/responselike": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "engines": { - "node": ">=8.0.0" + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/available-typed-arrays": { + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + }, + "node_modules/@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", + "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" + }, + "node_modules/@types/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-82E/lVRaqelV9qmRzzJ1PKTpyrpnT7mwdneKNJB9hUtypZDMggloDfFUCIqRRx3lYRxteCwXSq9c+W71Vf0QnQ==" + }, + "node_modules/@types/sparqljs": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/sparqljs/-/sparqljs-3.1.3.tgz", + "integrity": "sha512-nmFgmR6ns4i8sg9fYu+293H+PMLKmDOZy34sgwgAeUEEiIqSs4guj5aCZRt3gq1g0yuKXkqrxLDq/684g7pGtQ==", + "dependencies": { + "rdf-js": "^4.0.2" + } + }, + "node_modules/@types/uritemplate": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@types/uritemplate/-/uritemplate-0.3.4.tgz", + "integrity": "sha512-1D8mJEeQEXynoPQKJkneIK+tXaM2Qnk6c80RBQPV/O2ToypI4mlqXy5jojnYKjTX2Q+EMNMOWt0wNdLbb2MUpA==" + }, + "node_modules/@types/uuid": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", + "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==" + }, + "node_modules/@types/websocket": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", + "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/awilix": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/awilix/-/awilix-5.0.1.tgz", - "integrity": "sha512-Sm4F0kUuKMW+tzB5+2PGU/geBrCXmtdhy3a+l+KZdyzUMY8B9cueMaeR5zESZOH0VwsIA40FFT4Mr1JY8pknYw==", + "node_modules/@types/xml": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/xml/-/xml-1.0.8.tgz", + "integrity": "sha512-IptEZBtDwSPayCP8FmbordhAdjdxsif4zH29xTbBRacZeCHFHZp8OxyG1/CrS8AS0MziJUPTGWCTKbYtvHGYPg==", "dependencies": { - "camel-case": "^4.1.2", - "glob": "^7.1.7" - }, - "engines": { - "node": ">=12.0.0" + "@types/node": "*" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" + "node_modules/@types/yargs": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, - "node_modules/axe-core": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.3.tgz", - "integrity": "sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==", + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" + }, + "node_modules/@vascosantos/moving-average": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz", + "integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "peer": true, - "engines": { - "node": ">=4" + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "peer": true, "dependencies": { - "follow-redirects": "^1.14.4" + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true, "peer": true }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "peer": true, "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" + "@webassemblyjs/ast": "1.9.0" } }, - "node_modules/base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "peer": true, "dependencies": { - "safe-buffer": "^5.0.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "peer": true, "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "peer": true, "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@xtuc/long": "4.2.2" } }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "peer": true, "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "peer": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/base/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "peer": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/base64url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", - "engines": { - "node": ">=6.0.0" + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "peer": true, "dependencies": { - "tweetnacl": "^0.14.3" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "node_modules/big-number": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/big-number/-/big-number-2.0.0.tgz", - "integrity": "sha512-C67Su0g+XsmXADX/UM9L/+xSbqqwq0D/qGJs2ky6Noy2FDuCZnC38ZSXODiaBvqWma2VYRZEXgm4H74PS6tCDg==" + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, - "peer": true, - "engines": { - "node": "*" - } + "peer": true }, - "node_modules/bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", - "engines": { - "node": "*" - } + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": "*" + "node": ">=6.5" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/abortable-iterator": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-3.0.2.tgz", + "integrity": "sha512-qVP8HFfTpUQI2F+f1tpTriKDIZ4XrmwCrBCrQeRKO7DKWF3kgoT6NXiNDv2krrGcHxPwmI63eGQiec81sEaWIw==", + "dependencies": { + "get-iterator": "^1.0.2" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "node_modules/abortcontroller-polyfill": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", + "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==" + }, + "node_modules/abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", "dependencies": { - "file-uri-to-path": "1.0.0" + "xtend": "~4.0.0" } }, - "node_modules/bl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", - "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/blakejs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", - "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/bn": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bn/-/bn-1.0.5.tgz", - "integrity": "sha512-7TvGbqbZb6lDzsBtNz1VkdXXV0BVmZKPPViPmo2IpvwaryF7P+QKYKACyVkwo2mZPr2CpFiz7EtgPEcc3o/JFQ==" - }, - "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 0.8" + "node": ">=0.4.0" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" } }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { "node": ">=10" @@ -4973,1122 +6128,3616 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { - "color-name": "~1.1.4" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, + "node_modules/any-signal": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", + "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "abort-controller": "^3.0.0", + "native-abort-controller": "^1.0.3" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 8" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/app-module-path": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz", + "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==" + }, + "node_modules/app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "default-require-extensions": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/brolog": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/brolog/-/brolog-1.12.4.tgz", - "integrity": "sha512-ibNvm1hD3WMhKAnxelbwI8t39c5Z0s/gMFARj1Y/tdID1s3dCSdd2UVn+6wtu04nRUTg4TXg9s1WXqcD5d0ZVw==" - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "sprintf-js": "~1.0.2" } }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "node_modules/args": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/args/-/args-5.0.1.tgz", + "integrity": "sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==", "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "node_modules/args/node_modules/camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "engines": { + "node": ">=6" } }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "node_modules/args/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/browserify-rsa/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "node_modules/args/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" } }, - "node_modules/browserify-sign/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, "peer": true, "dependencies": { - "pako": "~1.0.5" + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" } }, - "node_modules/browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/bufferutil": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.4.tgz", - "integrity": "sha512-VNxjXUCrF3LvbLgwfkTb5LsFvk6pGIn7OBb9x+3o+iJ6mKw0JTUp4chBFc88hi1aspeZGeZG9jAIbpFYPQSLZw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" - }, + "peer": true, "engines": { - "node": ">=6.14.2" + "node": ">=0.10.0" } }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true, - "peer": true - }, - "node_modules/busboy": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", - "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", - "dependencies": { - "dicer": "0.3.0" - }, + "peer": true, "engines": { - "node": ">=4.5.0" + "node": ">=0.10.0" } }, - "node_modules/bytes": { + "node_modules/arr-union": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "peer": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "dev": true, + "peer": true, "dependencies": { - "minimist": "^1.2.6" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" + "engines": { + "node": ">= 0.4" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cacache/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true, "peer": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "node_modules/array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "peer": true, "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/array.prototype.flatmap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", + "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", + "dev": true, + "peer": true, "dependencies": { - "pump": "^3.0.0" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { + "node_modules/arrayify-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" + "resolved": "https://registry.npmjs.org/arrayify-stream/-/arrayify-stream-2.0.0.tgz", + "integrity": "sha512-Z2NRtxpWQIz3NRA2bEZOziIungBH+fpsFFEolc5u8uVRheYitvsDNvejlfyh/hjZ9VyS9Ba62oY0zc5oa6Wu7g==" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" } }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "object-assign": "^4.1.1", + "util": "0.10.3" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true, + "peer": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "peer": true, "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "inherits": "2.0.1" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001257", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz", - "integrity": "sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==", + "node_modules/assertion-error-formatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz", + "integrity": "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "dependencies": { + "diff": "^4.0.1", + "pad-right": "^0.2.2", + "repeat-string": "^1.6.1" } }, - "node_modules/canonicalize": { + "node_modules/assertion-tools": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", - "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" - }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, + "resolved": "https://registry.npmjs.org/assertion-tools/-/assertion-tools-1.0.8.tgz", + "integrity": "sha512-tv5lYwLkrJAIbaRNBwlD65Qztwad5NafO1VH+DxjnGRt53xk0qkSHX1CQu82dGg7fjkGcRZjc+mnlPH2gjmcIg==", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" + "jsonld": "^6.0.0", + "keccak256": "^1.0.6", + "merkletreejs": "^0.2.32", + "multiformats": "^9.7.1", + "web3": "^1.7.4" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", - "dev": true, + "node_modules/assertion-tools/node_modules/@digitalbazaar/http-client": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.2.0.tgz", + "integrity": "sha512-NhYXcWE/JDE7AnJikNX7q0S6zNuUPA2NuIoRdUpmvHlarjmRqyr6hIO3Awu2FxlUzbdiI1uzuWrZyB9mD1tTvw==", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "ky": "^0.30.0", + "ky-universal": "^0.10.1", + "undici": "^5.2.0" }, "engines": { - "node": ">=4" + "node": ">=14.0" } }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "node_modules/assertion-tools/node_modules/data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "engines": { + "node": ">= 12" } }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "node_modules/assertion-tools/node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "dependencies": { - "traverse": ">=0.3.0 <0.4" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, "engines": { - "node": "*" + "node": "^12.20 || >= 14.13" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/assertion-tools/node_modules/jsonld": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-6.0.0.tgz", + "integrity": "sha512-1SkN2RXhMCTCSkX+bzHvr9ycM2HTmjWyV41hn2xG7k6BqlCgRjw0zHmuqfphjBRPqi1gKMIqgBCe/0RZMcWrAA==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@digitalbazaar/http-client": "^3.2.0", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + } + }, + "node_modules/assertion-tools/node_modules/ky": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", + "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sindresorhus/ky?sponsor=1" } }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/assertion-tools/node_modules/ky-universal": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.10.1.tgz", + "integrity": "sha512-r8909k+ELKZAxhVA5c440x22hqw5XcMRwLRbgpPQk4JHy3/ddJnvzcnSo5Ww3HdKdNeS3Y8dBgcIYyVahMa46g==", "dependencies": { - "color-convert": "^2.0.1" + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.2" }, "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" + }, + "peerDependencies": { + "ky": ">=0.26.0", + "web-streams-polyfill": ">=3.0.1" + }, + "peerDependenciesMeta": { + "web-streams-polyfill": { + "optional": true + } } }, - "node_modules/chalk/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/assertion-tools/node_modules/node-fetch": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", "dependencies": { - "color-name": "~1.1.4" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": ">=7.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/chalk/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "peer": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true, + "peer": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "engines": { "node": ">=8" } }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, - "node_modules/chrome-trace-event": { + "node_modules/async-each": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true, - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "optional": true, + "peer": true }, - "node_modules/cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "deprecated": "This module has been superseded by the multiformats module", + "node_modules/async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", "dependencies": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" + "async": "^2.4.0" } }, - "node_modules/cids/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/async-eventemitter/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "lodash": "^4.17.14" } }, - "node_modules/cids/node_modules/multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "deprecated": "This module has been superseded by the multiformats module", + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/async-mutex": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz", + "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", "dependencies": { - "buffer": "^5.6.0", - "varint": "^5.0.0" + "tslib": "^2.3.1" } }, - "node_modules/cids/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + "node_modules/asynciterator": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.4.0.tgz", + "integrity": "sha512-jFuvnCHjUAyW33E3zpZhQxBM3SDuyxkDwtjhXD27WKwB/7UrZHaDAia7ZbqL94zLbUGhgxhO0vfopTLi7Jcrig==" }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "node_modules/asyncjoin": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/asyncjoin/-/asyncjoin-1.0.5.tgz", + "integrity": "sha512-yRNu4POPpxKH/dMW0e6XyXflFaTYZRib3rdVMkJb8Zb2toT7v3ZjTmR5oEPB8vvNfxGwCuiS7fLMZq/uWoOx2Q==", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "asynciterator": "^3.2.0" } }, - "node_modules/class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, - "node_modules/class-transformer": { + "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==", - "dev": true + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true, "peer": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "bin": { + "atob": "bin/atob.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 4.5.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cli-color": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.1.tgz", - "integrity": "sha512-eBbxZF6fqPUNnf7CLAFOersUnyYzv83tHFLSlts+OAHsNendaqv2tHCq+/MO+b3Y+9JeoUlIvobyxG/Z8GNeOg==", + "node_modules/await-semaphore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz", + "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" + }, + "node_modules/awilix": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/awilix/-/awilix-5.0.1.tgz", + "integrity": "sha512-Sm4F0kUuKMW+tzB5+2PGU/geBrCXmtdhy3a+l+KZdyzUMY8B9cueMaeR5zESZOH0VwsIA40FFT4Mr1JY8pknYw==", "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" + "camel-case": "^4.1.2", + "glob": "^7.1.7" }, "engines": { - "node": ">=0.10" + "node": ">=12.0.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/axe-core": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.3.tgz", + "integrity": "sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==", "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, + "peer": true, "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "1.4.0" + "node": ">=4" } }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "follow-redirects": "^1.14.4" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } + "peer": true }, - "node_modules/cli-truncate/node_modules/ansi-styles": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", - "dev": true, - "engines": { - "node": ">=12" + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", + "semver": "^6.1.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-truncate/node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", + "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" + "@babel/helper-define-polyfill-provider": "^0.3.2" }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, + "node_modules/backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "precond": "0.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, + "peer": true, "dependencies": { - "ansi-regex": "^6.0.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "engines": { - "node": ">=0.8" + "safe-buffer": "^5.0.1" } }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "peer": true, "dependencies": { - "mimic-response": "^1.0.0" + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/collection-visit": { + "node_modules/base/node_modules/is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "peer": true, "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "kind-of": "^6.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "peer": true, "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "peer": true, "dependencies": { - "color-name": "1.1.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "node_modules/base/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", "engines": { - "node": ">=0.1.90" + "node": ">=6.0.0" } }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" + "tweetnacl": "^0.14.3" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", "engines": { - "node": ">= 0.8" + "node": ">=0.6" } }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "node_modules/big-number": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/big-number/-/big-number-2.0.0.tgz", + "integrity": "sha512-C67Su0g+XsmXADX/UM9L/+xSbqqwq0D/qGJs2ky6Noy2FDuCZnC38ZSXODiaBvqWma2VYRZEXgm4H74PS6tCDg==" }, - "node_modules/commondir": { + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "engines": { + "node": "*" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", + "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blakejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", + "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brolog": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/brolog/-/brolog-1.12.4.tgz", + "integrity": "sha512-ibNvm1hD3WMhKAnxelbwI8t39c5Z0s/gMFARj1Y/tdID1s3dCSdd2UVn+6wtu04nRUTg4TXg9s1WXqcD5d0ZVw==" + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "peer": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffer-reverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", + "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==" + }, + "node_modules/buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true, "peer": true }, - "node_modules/componentsjs": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/componentsjs/-/componentsjs-5.0.1.tgz", - "integrity": "sha512-FMpAYBTJk+/Lsq0mgL6ugyabFjFy4H9d37GkgeGFxFt45GPxe2SKNoujoUDRNCQolajFSngisl105Ju8qzp+LQ==", + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dependencies": { - "@rdfjs/types": "*", - "@types/minimist": "^1.2.0", - "@types/node": "^14.14.7", - "@types/semver": "^7.3.4", - "jsonld-context-parser": "^2.1.1", - "minimist": "^1.2.0", - "rdf-data-factory": "^1.1.0", - "rdf-object": "^1.13.1", - "rdf-parse": "^2.0.0", - "rdf-quad": "^1.5.0", - "rdf-terms": "^1.7.0", - "semver": "^7.3.2", - "winston": "^3.3.3" + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" }, "bin": { - "componentsjs-compile-config": "bin/compile-config.js" + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/cacache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "peer": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=0.10.0" } }, - "node_modules/componentsjs/node_modules/@types/node": { - "version": "14.18.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.14.tgz", - "integrity": "sha512-HTgN9C1x8iMFycNAkLKIkJg+D3z1j0/Bm5/CMyzI3bO8a8dS0U1FxlS6hfvg5MPUYqkG3Y1myuje7HUNKLX9Mw==" + "node_modules/cacheable-lookup": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==", + "engines": { + "node": ">=10.6.0" + } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001376", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001376.tgz", + "integrity": "sha512-I27WhtOQ3X3v3it9gNs/oTpoE5KpwmqKR5oKPA8M0G7uMXh9Ty81Q904HpKUrM30ei7zfcL5jE7AXefgbOfMig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" + }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/cbor": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", + "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", + "dependencies": { + "bignumber.js": "^9.0.1", + "nofilter": "^1.0.4" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/change-case": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz", + "integrity": "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==", + "dependencies": { + "camel-case": "^3.0.0", + "constant-case": "^2.0.0", + "dot-case": "^2.1.0", + "header-case": "^1.0.0", + "is-lower-case": "^1.1.0", + "is-upper-case": "^1.1.0", + "lower-case": "^1.1.1", + "lower-case-first": "^1.0.0", + "no-case": "^2.3.2", + "param-case": "^2.1.0", + "pascal-case": "^2.0.0", + "path-case": "^2.1.0", + "sentence-case": "^2.1.0", + "snake-case": "^2.1.0", + "swap-case": "^1.1.0", + "title-case": "^2.1.0", + "upper-case": "^1.1.1", + "upper-case-first": "^1.1.0" + } + }, + "node_modules/change-case/node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/change-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/change-case/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/change-case/node_modules/pascal-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", + "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", + "dependencies": { + "camel-case": "^3.0.0", + "upper-case-first": "^1.1.0" + } + }, + "node_modules/change-case/node_modules/upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", + "dependencies": { + "upper-case": "^1.1.1" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==", + "dependencies": { + "functional-red-black-tree": "^1.0.1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cids": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "deprecated": "This module has been superseded by the multiformats module", + "dependencies": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "engines": { + "node": ">=4.0.0", + "npm": ">=3.0.0" + } + }, + "node_modules/cids/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/cids/node_modules/multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "deprecated": "This module has been superseded by the multiformats module", + "dependencies": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + }, + "node_modules/cids/node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" + }, + "node_modules/class-transformer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", + "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "peer": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-color": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.1.tgz", + "integrity": "sha512-eBbxZF6fqPUNnf7CLAFOersUnyYzv83tHFLSlts+OAHsNendaqv2tHCq+/MO+b3Y+9JeoUlIvobyxG/Z8GNeOg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "1.4.0" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/ansi-styles": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", + "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "peer": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true, + "peer": true + }, + "node_modules/componentsjs": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/componentsjs/-/componentsjs-5.0.1.tgz", + "integrity": "sha512-FMpAYBTJk+/Lsq0mgL6ugyabFjFy4H9d37GkgeGFxFt45GPxe2SKNoujoUDRNCQolajFSngisl105Ju8qzp+LQ==", + "dependencies": { + "@rdfjs/types": "*", + "@types/minimist": "^1.2.0", + "@types/node": "^14.14.7", + "@types/semver": "^7.3.4", + "jsonld-context-parser": "^2.1.1", + "minimist": "^1.2.0", + "rdf-data-factory": "^1.1.0", + "rdf-object": "^1.13.1", + "rdf-parse": "^2.0.0", + "rdf-quad": "^1.5.0", + "rdf-terms": "^1.7.0", + "semver": "^7.3.2", + "winston": "^3.3.3" + }, + "bin": { + "componentsjs-compile-config": "bin/compile-config.js" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/componentsjs/node_modules/@types/node": { + "version": "14.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.14.tgz", + "integrity": "sha512-HTgN9C1x8iMFycNAkLKIkJg+D3z1j0/Bm5/CMyzI3bO8a8dS0U1FxlS6hfvg5MPUYqkG3Y1myuje7HUNKLX9Mw==" + }, + "node_modules/compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dependencies": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", + "dev": true + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true, + "peer": true + }, + "node_modules/constant-case": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", + "integrity": "sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==", + "dependencies": { + "snake-case": "^2.1.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true, + "peer": true + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-hash": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "dependencies": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/cookiejar": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-concurrently/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", + "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", + "dependencies": { + "browserslist": "^4.21.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-js-pure": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.17.3.tgz", + "integrity": "sha512-YusrqwiOTTn8058JDa0cv9unbXdIiIgcgI9gXso0ey4WgkFLd3lYlV9rp9n7nDCsYxXsMDTjA4m1h3T348mdlQ==", + "dev": true, + "hasInstallScript": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", + "dev": true, + "peer": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deeks": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/deeks/-/deeks-2.5.1.tgz", + "integrity": "sha512-fqrBeUz7f1UqaXDRzVB5RG2EfPk15HJRrb2pMZj8mLlSTtz4tRPsK5leFOskoHFPuyZ6+7aRM9j657fvXLkJ7Q==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-require-extensions/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "dependencies": { + "abstract-leveldown": "~2.6.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "peer": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dkg-evm-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dkg-evm-module/-/dkg-evm-module-1.0.1.tgz", + "integrity": "sha512-trmiV9LyzHIS4u7F+1c85RZZ16aumYdrScuK0yeHL9GxkymvIxY1eBkwK5F5K0jELkx7nRVicS1ioYl5k9DAMw==", + "dependencies": { + "@openzeppelin/contracts": "^4.6.0", + "@truffle/hdwallet-provider": "^1.2.1", + "bn.js": "^5.1.3", + "dotenv": "^8.2.0", + "fs": "0.0.1-security", + "ganache": "^7.3.1", + "ganache-cli": "^6.12.2", + "ganache-time-traveler": "^1.0.15", + "hamming-distance": "^1.0.0", + "hex-to-binary": "^1.0.1", + "keccak256": "^1.0.6", + "merkle-tools": "^1.4.1", + "merkletreejs": "^0.2.32", + "minimist": "latest", + "mocha": "^8.2.1", + "multiformats": "^9.6.5", + "truffle": "^5.1.56", + "truffle-assertions": "^0.9.2", + "uint8arrays": "^3.0.0", + "web3": "^1.3.0" + } + }, + "node_modules/dkg-evm-module/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/dkg-evm-module/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/dkg-evm-module/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/dkg-evm-module/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/dkg-evm-module/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/dkg-evm-module/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/dkg-evm-module/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/dkg-evm-module/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dkg-evm-module/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/dkg-evm-module/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dkg-evm-module/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dkg-evm-module/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dkg-evm-module/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/dkg-evm-module/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dkg-evm-module/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/dkg-evm-module/node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/dkg-evm-module/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dkg-evm-module/node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dkg-evm-module/node_modules/mocha": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", + "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 10.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/dkg-evm-module/node_modules/nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/dkg-evm-module/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dkg-evm-module/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dkg-evm-module/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dkg-evm-module/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/dkg-evm-module/node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/dkg-evm-module/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/dkg-evm-module/node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/dkg-evm-module/node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dkg-evm-module/node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dkg-evm-module/node_modules/workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==" + }, + "node_modules/dkg-evm-module/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/dkg-evm-module/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dkg-evm-module/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/dkg-evm-module/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dkg.js": { + "version": "6.0.0-beta.2.7", + "resolved": "https://registry.npmjs.org/dkg.js/-/dkg.js-6.0.0-beta.2.7.tgz", + "integrity": "sha512-L8eu3OdODyfJw6+MVlsHGPEBk1SWh8fRhClxKboO3e/xdi6WqdL8Y2foOEHvPk7IssRu40Fd11WWUb6pqiHpuw==", + "dev": true, + "dependencies": { + "axios": "^0.26.1", + "crypto-js": "^4.1.1", + "form-data": "^4.0.0", + "loglevel": "^1.8.0", + "merkle-tools": "^1.4.1", + "n3": "^1.12.2", + "sparqljs": "^3.5.1", + "sync-request": "^6.1.0", + "uglifyjs-webpack-plugin": "^2.2.0", + "uuid": "^8.3.2" + } + }, + "node_modules/dkg.js/node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/dns-over-http-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", + "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", + "dependencies": { + "debug": "^4.3.1", + "native-fetch": "^3.0.0", + "receptacle": "^1.3.2" + } + }, + "node_modules/doc-path": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/doc-path/-/doc-path-3.0.2.tgz", + "integrity": "sha512-VRlA2OKSjTbHWj6wmSanxJ338fE/YN8pqmZ0FIWK5JWkIJMFRc4KmD35JtOrnjvVG0WrzOtDDNHx1lN1tkb+lA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", + "integrity": "sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/dot-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/dot-case/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dottie": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duration": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", + "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.46" + } + }, + "node_modules/durations": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/durations/-/durations-3.4.2.tgz", + "integrity": "sha512-V/lf7y33dGaypZZetVI1eu7BmvkbC4dItq12OElLRpKuaU5JxQstV2zHwLv8P7cNbQ+KL1WD80zMCTx5dNC4dg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ed2curve": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", + "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", + "dependencies": { + "tweetnacl": "1.x.x" + } + }, + "node_modules/ed2curve/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/editorconfig/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/electron-fetch": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.7.4.tgz", + "integrity": "sha512-+fBLXEy4CJWQ5bz8dyaeSG1hD6JJ15kBZyj3eh24pIVrd3hLM47H/umffrdQfS6GZ0falF0g9JT9f3Rs6AVUhw==", + "dependencies": { + "encoding": "^0.1.13" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.219", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.219.tgz", + "integrity": "sha512-zoQJsXOUw0ZA0YxbjkmzBumAJRtr6je5JySuL/bAoFs0DuLiLJ+5FzRF7/ZayihxR2QcewlRZVm5QZdUhwjOgA==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "dev": true, - "engines": [ - "node >= 0.8" - ], + "peer": true, "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/concat-stream/node_modules/readable-stream": { + "node_modules/enhanced-resolve/node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, + "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6099,2606 +9748,2976 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/concat-stream/node_modules/string_decoder": { + "node_modules/enhanced-resolve/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "peer": true, "dependencies": { "safe-buffer": "~5.1.0" } }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "peer": true, "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true, - "peer": true + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/es6-promisify": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", + "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", "dev": true, - "peer": true + "dependencies": { + "eslint-config-airbnb-base": "^14.2.1", + "object.assign": "^4.1.2", + "object.entries": "^1.1.2" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-react": "^7.21.5", + "eslint-plugin-react-hooks": "^4 || ^3 || ^2.3.0 || ^1.7.0" + } }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "node_modules/eslint-config-airbnb-base": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "dev": true, "dependencies": { - "safe-buffer": "5.1.2" + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.2" }, "engines": { - "node": ">= 0.6" + "node": ">= 6" + }, + "peerDependencies": { + "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", + "eslint-plugin-import": "^2.22.1" } }, - "node_modules/content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "node_modules/eslint-config-google": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.13.0.tgz", + "integrity": "sha512-ELgMdOIpn0CFdsQS+FuxO+Ttu4p+aLaXHv9wA9yVnzqlUGV7oN/eRRnJekk7TCur6Cu2FXX0fqfIXRBaM14lpQ==", + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "peer": true, "dependencies": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" + "debug": "^3.2.7", + "resolve": "^1.20.0" } }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", + "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^3.2.7", + "pkg-dir": "^2.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "peer": true, "dependencies": { - "safe-buffer": "~5.1.1" + "ms": "^2.1.1" } }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "node_modules/eslint-plugin-import": { + "version": "2.24.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", + "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "dev": true, + "peer": true, + "dependencies": { + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.6.2", + "find-up": "^2.0.0", + "has": "^1.0.3", + "is-core-module": "^2.6.0", + "minimatch": "^3.0.4", + "object.values": "^1.1.4", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "peer": true + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", + "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", "dev": true, + "peer": true, "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" } }, - "node_modules/copy-concurrently/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "peer": true + }, + "node_modules/eslint-plugin-react": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.1.tgz", + "integrity": "sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug==", + "dev": true, + "peer": true, + "dependencies": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "estraverse": "^5.2.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.4", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.4", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", + "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", "dev": true, - "dependencies": { - "minimist": "^1.2.6" + "peer": true, + "engines": { + "node": ">=10" }, - "bin": { - "mkdirp": "bin/cmd.js" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, - "node_modules/copy-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "peer": true, "dependencies": { - "glob": "^7.1.3" + "esutils": "^2.0.2" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "node_modules/eslint-plugin-react/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/core-js-pure": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.17.3.tgz", - "integrity": "sha512-YusrqwiOTTn8058JDa0cv9unbXdIiIgcgI9gXso0ey4WgkFLd3lYlV9rp9n7nDCsYxXsMDTjA4m1h3T348mdlQ==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", "dev": true, - "hasInstallScript": true, "peer": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">= 0.10" + "node": ">=8.0.0" } }, - "node_modules/crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - }, - "bin": { - "crc32": "bin/crc32.njs" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=0.8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" } }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" } }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "engines": { + "node": ">=6" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dependencies": { - "node-fetch": "2.6.7" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=4" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "estraverse": "^5.1.0" }, "engines": { - "node": "*" + "node": ">=0.10" } }, - "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "engines": { - "node": ">=8" - } - }, - "node_modules/cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "node": ">=4.0" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", - "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==", - "dev": true, - "peer": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dependencies": { - "assert-plus": "^1.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "engines": { - "node": ">= 6" + "node": ">=4.0" } }, - "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "engines": { - "node": "*" + "node": ">=4.0" } }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dependencies": { - "ms": "2.1.2" - }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=4.0" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { "node": ">=0.10.0" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "engines": { - "node": ">=0.10" + "node": ">= 0.6" } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "node_modules/eth-block-tracker": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", + "integrity": "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==", "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" + "@babel/plugin-transform-runtime": "^7.5.5", + "@babel/runtime": "^7.5.5", + "eth-query": "^2.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" } }, - "node_modules/deeks": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/deeks/-/deeks-2.5.1.tgz", - "integrity": "sha512-fqrBeUz7f1UqaXDRzVB5RG2EfPk15HJRrb2pMZj8mLlSTtz4tRPsK5leFOskoHFPuyZ6+7aRM9j657fvXLkJ7Q==", - "engines": { - "node": ">= 12" + "node_modules/eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "dependencies": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" } }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, + "node_modules/eth-ens-namehash/node_modules/js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" + }, + "node_modules/eth-json-rpc-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz", + "integrity": "sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA==", + "deprecated": "Package renamed: https://www.npmjs.com/package/eth-rpc-errors", "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" + "fast-safe-stringify": "^2.0.6" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" + "node_modules/eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "node_modules/eth-lib/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" } }, - "node_modules/default-require-extensions": { + "node_modules/eth-rpc-errors": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz", + "integrity": "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==", "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-require-extensions/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" + "fast-safe-stringify": "^2.0.6" } }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "node_modules/eth-sig-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz", + "integrity": "sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==", + "deprecated": "Deprecated in favor of '@metamask/eth-sig-util'", "dependencies": { - "clone": "^1.0.2" + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.0" } }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "node_modules/eth-sig-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/eth-sig-util/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "peer": true, + "node_modules/eth-sig-util/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "js-sha3": "^0.8.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } + "node_modules/ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" }, - "node_modules/denque": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", - "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", - "engines": { - "node": ">=0.10" + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" } }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" + "node_modules/ethereum-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz", + "integrity": "sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg==" + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" } }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "@types/node": "*" } }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dependencies": { - "streamsearch": "0.1.2" - }, - "engines": { - "node": ">=4.5.0" + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" + "node_modules/ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "dependencies": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "node_modules/ethereumjs-account/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/ethereumjs-account/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/dkg.js": { - "version": "6.0.0-beta.2.7", - "resolved": "https://registry.npmjs.org/dkg.js/-/dkg.js-6.0.0-beta.2.7.tgz", - "integrity": "sha512-L8eu3OdODyfJw6+MVlsHGPEBk1SWh8fRhClxKboO3e/xdi6WqdL8Y2foOEHvPk7IssRu40Fd11WWUb6pqiHpuw==", - "dev": true, + "node_modules/ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "deprecated": "New package name format for new versions: @ethereumjs/block. Please update.", "dependencies": { - "axios": "^0.26.1", - "crypto-js": "^4.1.1", - "form-data": "^4.0.0", - "loglevel": "^1.8.0", - "merkle-tools": "^1.4.1", - "n3": "^1.12.2", - "sparqljs": "^3.5.1", - "sync-request": "^6.1.0", - "uglifyjs-webpack-plugin": "^2.2.0", - "uuid": "^8.3.2" + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" } }, - "node_modules/dkg.js/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dev": true, + "node_modules/ethereumjs-block/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { - "follow-redirects": "^1.14.8" + "lodash": "^4.17.14" } }, - "node_modules/dns-over-http-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", - "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", + "node_modules/ethereumjs-block/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "dependencies": { - "debug": "^4.3.1", - "native-fetch": "^3.0.0", - "receptacle": "^1.3.2" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/doc-path": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/doc-path/-/doc-path-3.0.2.tgz", - "integrity": "sha512-VRlA2OKSjTbHWj6wmSanxJ338fE/YN8pqmZ0FIWK5JWkIJMFRc4KmD35JtOrnjvVG0WrzOtDDNHx1lN1tkb+lA==", - "engines": { - "node": ">=12" + "node_modules/ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", + "deprecated": "New package name format for new versions: @ethereumjs/common. Please update." + }, + "node_modules/ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", + "dependencies": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/ethereumjs-tx/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/ethereumjs-tx/node_modules/ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==" + }, + "node_modules/ethereumjs-tx/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node_modules/ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "deprecated": "New package name format for new versions: @ethereumjs/vm. Please update.", + "dependencies": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" + "node_modules/ethereumjs-vm/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "node_modules/ethereumjs-vm/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "lodash": "^4.17.14" } }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "node_modules/ethereumjs-vm/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "deprecated": "New package name format for new versions: @ethereumjs/block. Please update.", "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, + "node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" } }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "engines": { - "node": ">=10" + "node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" } }, - "node_modules/dottie": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dependencies": { - "readable-stream": "^2.0.2" + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" } }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "node_modules/ethereumjs-wallet": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", + "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "aes-js": "^3.1.2", + "bs58check": "^2.1.2", + "ethereum-cryptography": "^0.1.3", + "ethereumjs-util": "^7.1.2", + "randombytes": "^2.1.0", + "scrypt-js": "^3.0.1", + "utf8": "^3.0.0", + "uuid": "^8.3.2" } }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", "dependencies": { - "safe-buffer": "~5.1.0" + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/duration": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", - "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", - "dev": true, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dependencies": { "d": "1", - "es5-ext": "~0.10.46" + "es5-ext": "~0.10.14" } }, - "node_modules/durations": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/durations/-/durations-3.4.2.tgz", - "integrity": "sha512-V/lf7y33dGaypZZetVI1eu7BmvkbC4dItq12OElLRpKuaU5JxQstV2zHwLv8P7cNbQ+KL1WD80zMCTx5dNC4dg==", - "dev": true, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, - "bin": { - "editorconfig": "bin/editorconfig" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "peer": true, "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "peer": true }, - "node_modules/electron-fetch": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.7.4.tgz", - "integrity": "sha512-+fBLXEy4CJWQ5bz8dyaeSG1hD6JJ15kBZyj3eh24pIVrd3hLM47H/umffrdQfS6GZ0falF0g9JT9f3Rs6AVUhw==", + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "dependencies": { - "encoding": "^0.1.13" + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=6" + "node": ">= 0.10.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.3.840", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.840.tgz", - "integrity": "sha512-yRoUmTLDJnkIJx23xLY7GbSvnmDCq++NSuxHDQ0jiyDJ9YZBUGJcrdUqm+ZwZFzMbCciVzfem2N2AWiHJcWlbw==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "node_modules/express-fileupload": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.4.0.tgz", + "integrity": "sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ==", "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "peer": true, + "node_modules/express-ipfilter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/express-ipfilter/-/express-ipfilter-1.2.0.tgz", + "integrity": "sha512-nPXKMuhqVjX7+Vny4XsrpdqlX4YAGcanE0gh5xzpfmNTsINGAgPnpk67kb0No3p1m4vGQQLU6hdaXRxsuGNlTA==", + "dependencies": { + "ip": "~1.1.0", + "lodash": "^4.17.11", + "proxy-addr": "^2.0.4", + "range_check": "^1.2.0" + }, "engines": { - "node": ">= 4" + "node": ">=8.9.0" } }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "node_modules/express-rate-limit": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.3.0.tgz", + "integrity": "sha512-932Io1VGKjM3ppi7xW9sb1J5nVkEJSUiOtHw2oE+JyHks1e+AXuOBSXbJKM0mcXwEnW1TibJibQ455Ow1YFjfg==", "engines": { - "node": ">= 0.8" + "node": ">= 12.9.0" + }, + "peerDependencies": { + "express": "^4" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/express-slow-down": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.4.0.tgz", + "integrity": "sha512-Tw5aa0plPj2STiuc2SyMw2VSjMvBgLGQHHoPhkIL4iPQcFZDueWBaiLxFZ3SrwrJhiu3b3sHNcsP6lXeWnbwAw==", "dependencies": { - "iconv-lite": "^0.6.2" + "defaults": "^1.0.3" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/express/node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", "dependencies": { - "once": "^1.4.0" + "type": "^2.5.0" } }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "peer": true, "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=0.10.0" } }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "peer": true, "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=0.10.0" } }, - "node_modules/enhanced-resolve/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "peer": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/enhanced-resolve/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "peer": true, "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dependencies": { - "ansi-colors": "^4.1.1" + "kind-of": "^6.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=0.10.0" } }, - "node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "engines": { - "node": ">=0.12" + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "peer": true, + "dependencies": { + "kind-of": "^6.0.0" }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, + "peer": true, "dependencies": { - "prr": "~1.0.1" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, - "bin": { - "errno": "cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/extglob/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "peer": true, - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==", "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-string": "^1.0.7", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "checkpoint-store": "^1.1.0" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==" + }, + "node_modules/fast-check": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz", + "integrity": "sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "pure-rand": "^5.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/fast-check" } }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true + "node_modules/fast-fifo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.0.0.tgz", + "integrity": "sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ==" }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "node_modules/es6-promisify": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", - "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/fast-redact": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz", + "integrity": "sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A==", "engines": { "node": ">=6" } }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "node_modules/fast-sort": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-3.1.1.tgz", + "integrity": "sha512-EA3PVIYj8uyyJc2Mma7GHjMrE74N/ClKkBj5gVUmY+8JePrc/ognCk4bhszVGYazu9Qk2aUTHnBF38QDSHcjkg==" + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "reusify": "^1.0.4" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, + "node_modules/fetch-blob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-2.1.2.tgz", + "integrity": "sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==", "engines": { - "node": ">=8" + "node": "^10.17.0 || >=12.3.0" + }, + "peerDependenciesMeta": { + "domexception": { + "optional": true + } } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "node_modules/fetch-ponyfill": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz", + "integrity": "sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g==", + "dependencies": { + "node-fetch": "~1.7.1" + } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/fetch-ponyfill/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "node_modules/fetch-ponyfill/node_modules/node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node_modules/fetch-sparql-endpoint": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/fetch-sparql-endpoint/-/fetch-sparql-endpoint-2.4.0.tgz", + "integrity": "sha512-7SLCQFF1N8dOhnJBJL2engSRYKZxD6oCsQ+rGQa/AwEfHpYqmJZVkyLWXC/pkV8vsZ1vkvYj8x89x2UpthQjdA==", + "dependencies": { + "@rdfjs/types": "*", + "@types/readable-stream": "^2.3.11", + "@types/sparqljs": "^3.1.3", + "abort-controller": "^3.0.0", + "cross-fetch": "^3.0.6", + "is-stream": "^2.0.0", + "minimist": "^1.2.0", + "n3": "^1.6.3", + "rdf-string": "^1.6.0", + "readable-web-to-node-stream": "^3.0.2", + "sparqljs": "^3.1.2", + "sparqljson-parse": "^1.7.0", + "sparqlxml-parse": "^1.5.0", + "stream-to-string": "^1.1.0" }, "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "fetch-sparql-endpoint": "bin/fetch-sparql-endpoint.js" } }, - "node_modules/eslint-config-airbnb": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", - "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "dependencies": { - "eslint-config-airbnb-base": "^14.2.1", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">= 6" + "node": ">=8" }, - "peerDependencies": { - "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-react": "^7.21.5", - "eslint-plugin-react-hooks": "^4 || ^3 || ^2.3.0 || ^1.7.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", - "eslint-plugin-import": "^2.22.1" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/eslint-config-google": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.13.0.tgz", - "integrity": "sha512-ELgMdOIpn0CFdsQS+FuxO+Ttu4p+aLaXHv9wA9yVnzqlUGV7oN/eRRnJekk7TCur6Cu2FXX0fqfIXRBaM14lpQ==", - "engines": { - "node": ">=0.10.0" + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" }, - "peerDependencies": { - "eslint": ">=5.16.0" + "engines": { + "node": ">=8" } }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">= 0.8" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "peer": true, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" + "ms": "2.0.0" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "peer": true, "dependencies": { - "ms": "^2.1.1" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "peer": true, "dependencies": { - "debug": "^3.2.7", - "pkg-dir": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "peer": true, "dependencies": { - "ms": "^2.1.1" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "peer": true, "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "peer": true, "dependencies": { - "ms": "2.0.0" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/find-cache-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "peer": true + "engines": { + "node": ">=8" + } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", - "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "peer": true, "dependencies": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" + "find-up": "^4.0.0" }, "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + "node": ">=8" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "peer": true - }, - "node_modules/eslint-plugin-react": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.1.tgz", - "integrity": "sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug==", + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "peer": true, "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flatmap": "^1.2.4", - "doctrine": "^2.1.0", - "estraverse": "^5.2.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.4", - "object.fromentries": "^2.0.4", - "object.values": "^1.1.4", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "string.prototype.matchall": "^4.0.5" + "locate-path": "^2.0.0" }, "engines": { "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", - "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "peer": true, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dependencies": { - "esutils": "^2.0.2" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "node_modules/flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, + "node_modules/flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==" + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "peer": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=6" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "engines": { - "node": ">=4" + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" } }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "peer": true, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "engines": { - "node": ">=6" - } + "node_modules/foreach": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", + "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "engines": { - "node": ">=4" + "node": ">=8.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "estraverse": "^5.1.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=0.10" + "node": ">= 6" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } + "node_modules/form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dependencies": { - "estraverse": "^5.2.0" + "fetch-blob": "^3.1.2" }, "engines": { - "node": ">=4.0" + "node": ">=12.20.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "node_modules/formdata-polyfill/node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, "engines": { - "node": ">=4.0" + "node": "^12.20 || >= 14.13" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { - "node": ">=4.0" + "node": ">= 0.6" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "peer": true, + "dependencies": { + "map-cache": "^0.2.2" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "engines": { "node": ">= 0.6" } }, - "node_modules/eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, "dependencies": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "node_modules/eth-ens-namehash/node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - }, - "node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { - "js-sha3": "^0.8.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/ethereumjs-util": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.2.tgz", - "integrity": "sha512-xCV3PTAhW8Q2k88XZn9VcO4OrjpeXAlDm5LQTaOLp81SjNSSY6+MwuGXrx6vafOMheWSmZGxIXUbue5e9UvUBw==", + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, + "node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.4" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=12" } }, - "node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "node_modules/fs-extra/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { - "@types/node": "*" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } }, - "node_modules/ethereumjs-wallet": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", - "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", - "dev": true, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "dependencies": { - "aes-js": "^3.1.2", - "bs58check": "^2.1.2", - "ethereum-cryptography": "^0.1.3", - "ethereumjs-util": "^7.1.2", - "randombytes": "^2.1.0", - "scrypt-js": "^3.0.1", - "utf8": "^3.0.0", - "uuid": "^8.3.2" + "minipass": "^2.6.0" } }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "node_modules/fs-write-stream-atomic/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "node_modules/fs-write-stream-atomic/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "safe-buffer": "~5.1.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, "engines": { - "node": ">=0.8.x" + "node": ">=0.6" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "glob": "^7.1.3" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "engines": { - "node": ">=0.8" - } + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "peer": true, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "peer": true + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "node_modules/ganache": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.4.0.tgz", + "integrity": "sha512-e1x0ZJsJ5zUP+hWtpSNv+FaavRdcrQhQwe+QZ4kVon5mDm6RgFpe3PzNDJXg82AeqqslohJeK9UinZbZzjewjQ==", + "bundleDependencies": [ + "@trufflesuite/bigint-buffer", + "emittery", + "keccak", + "leveldown", + "secp256k1", + "@types/bn.js", + "@types/lru-cache", + "@types/seedrandom" + ], + "hasShrinkwrap": true, "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "@trufflesuite/bigint-buffer": "1.1.10", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "5.1.1", + "@types/seedrandom": "3.0.1", + "emittery": "0.10.0", + "keccak": "3.0.1", + "leveldown": "6.1.0", + "secp256k1": "4.0.2" }, - "engines": { - "node": ">= 0.10.0" + "bin": { + "ganache": "dist/node/cli.js", + "ganache-cli": "dist/node/cli.js" + }, + "optionalDependencies": { + "bufferutil": "4.0.5", + "utf-8-validate": "5.0.7" } }, - "node_modules/express-fileupload": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.2.1.tgz", - "integrity": "sha512-fWPNAkBj+Azt9Itmcz/Reqdg3LeBfaXptDEev2JM8bCC0yDptglCnlizhf0YZauyU5X/g6v7v4Xxqhg8tmEfEA==", + "node_modules/ganache-cli": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.12.2.tgz", + "integrity": "sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw==", + "bundleDependencies": [ + "source-map-support", + "yargs", + "ethereumjs-util" + ], + "deprecated": "ganache-cli is now ganache; visit https://trfl.io/g7 for details", "dependencies": { - "busboy": "^0.3.1" + "ethereumjs-util": "6.2.1", + "source-map-support": "0.5.12", + "yargs": "13.2.4" }, - "engines": { - "node": ">=8.0.0" + "bin": { + "ganache-cli": "cli.js" } }, - "node_modules/express-ipfilter": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/express-ipfilter/-/express-ipfilter-1.2.0.tgz", - "integrity": "sha512-nPXKMuhqVjX7+Vny4XsrpdqlX4YAGcanE0gh5xzpfmNTsINGAgPnpk67kb0No3p1m4vGQQLU6hdaXRxsuGNlTA==", + "node_modules/ganache-cli/node_modules/@types/bn.js": { + "version": "4.11.6", + "inBundle": true, + "license": "MIT", "dependencies": { - "ip": "~1.1.0", - "lodash": "^4.17.11", - "proxy-addr": "^2.0.4", - "range_check": "^1.2.0" - }, - "engines": { - "node": ">=8.9.0" + "@types/node": "*" } }, - "node_modules/express-rate-limit": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.3.0.tgz", - "integrity": "sha512-932Io1VGKjM3ppi7xW9sb1J5nVkEJSUiOtHw2oE+JyHks1e+AXuOBSXbJKM0mcXwEnW1TibJibQ455Ow1YFjfg==", - "engines": { - "node": ">= 12.9.0" - }, - "peerDependencies": { - "express": "^4" - } + "node_modules/ganache-cli/node_modules/@types/node": { + "version": "14.11.2", + "inBundle": true, + "license": "MIT" }, - "node_modules/express-slow-down": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/express-slow-down/-/express-slow-down-1.4.0.tgz", - "integrity": "sha512-Tw5aa0plPj2STiuc2SyMw2VSjMvBgLGQHHoPhkIL4iPQcFZDueWBaiLxFZ3SrwrJhiu3b3sHNcsP6lXeWnbwAw==", + "node_modules/ganache-cli/node_modules/@types/pbkdf2": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "defaults": "^1.0.3" + "@types/node": "*" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/ganache-cli/node_modules/@types/secp256k1": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@types/node": "*" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "node_modules/ganache-cli/node_modules/ansi-regex": { + "version": "4.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/express/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "node_modules/ganache-cli/node_modules/ansi-styles": { + "version": "3.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=0.6" + "node": ">=4" } }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "node_modules/ganache-cli/node_modules/base-x": { + "version": "3.0.8", + "inBundle": true, + "license": "MIT", "dependencies": { - "type": "^2.5.0" + "safe-buffer": "^5.0.1" } }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + "node_modules/ganache-cli/node_modules/blakejs": { + "version": "1.1.0", + "inBundle": true, + "license": "CC0-1.0" }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "node_modules/ganache-cli/node_modules/bn.js": { + "version": "4.11.9", + "inBundle": true, + "license": "MIT" }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "peer": true, + "node_modules/ganache-cli/node_modules/brorand": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/browserify-aes": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "peer": true, + "node_modules/ganache-cli/node_modules/bs58": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "base-x": "^3.0.2" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "peer": true, + "node_modules/ganache-cli/node_modules/bs58check": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^6.0.0" - }, + "node_modules/ganache-cli/node_modules/buffer-from": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/buffer-xor": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/camelcase": { + "version": "5.3.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "peer": true, + "node_modules/ganache-cli/node_modules/cipher-base": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "peer": true, + "node_modules/ganache-cli/node_modules/cliui": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, - "node_modules/extglob/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "node_modules/ganache-cli/node_modules/color-convert": { + "version": "1.9.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "node_modules/ganache-cli/node_modules/color-name": { + "version": "1.1.3", + "inBundle": true, + "license": "MIT" }, - "node_modules/fast-fifo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.0.0.tgz", - "integrity": "sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ==" + "node_modules/ganache-cli/node_modules/create-hash": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "node_modules/ganache-cli/node_modules/create-hmac": { + "version": "1.1.7", + "inBundle": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "node_modules/ganache-cli/node_modules/cross-spawn": { + "version": "6.0.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } }, - "node_modules/fast-redact": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz", - "integrity": "sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A==", + "node_modules/ganache-cli/node_modules/decamelize": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + "node_modules/ganache-cli/node_modules/elliptic": { + "version": "6.5.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } }, - "node_modules/fast-sort": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-3.1.1.tgz", - "integrity": "sha512-EA3PVIYj8uyyJc2Mma7GHjMrE74N/ClKkBj5gVUmY+8JePrc/ognCk4bhszVGYazu9Qk2aUTHnBF38QDSHcjkg==" + "node_modules/ganache-cli/node_modules/emoji-regex": { + "version": "7.0.3", + "inBundle": true, + "license": "MIT" }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/ganache-cli/node_modules/end-of-stream": { + "version": "1.4.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "reusify": "^1.0.4" + "once": "^1.4.0" } }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + "node_modules/ganache-cli/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } }, - "node_modules/fetch-blob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-2.1.2.tgz", - "integrity": "sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==", - "engines": { - "node": "^10.17.0 || >=12.3.0" - }, - "peerDependenciesMeta": { - "domexception": { - "optional": true - } + "node_modules/ganache-cli/node_modules/ethereumjs-util": { + "version": "6.2.1", + "inBundle": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" } }, - "node_modules/fetch-sparql-endpoint": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/fetch-sparql-endpoint/-/fetch-sparql-endpoint-2.4.0.tgz", - "integrity": "sha512-7SLCQFF1N8dOhnJBJL2engSRYKZxD6oCsQ+rGQa/AwEfHpYqmJZVkyLWXC/pkV8vsZ1vkvYj8x89x2UpthQjdA==", + "node_modules/ganache-cli/node_modules/ethjs-util": { + "version": "0.1.6", + "inBundle": true, + "license": "MIT", "dependencies": { - "@rdfjs/types": "*", - "@types/readable-stream": "^2.3.11", - "@types/sparqljs": "^3.1.3", - "abort-controller": "^3.0.0", - "cross-fetch": "^3.0.6", - "is-stream": "^2.0.0", - "minimist": "^1.2.0", - "n3": "^1.6.3", - "rdf-string": "^1.6.0", - "readable-web-to-node-stream": "^3.0.2", - "sparqljs": "^3.1.2", - "sparqljson-parse": "^1.7.0", - "sparqlxml-parse": "^1.5.0", - "stream-to-string": "^1.1.0" + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" }, - "bin": { - "fetch-sparql-endpoint": "bin/fetch-sparql-endpoint.js" + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true + "node_modules/ganache-cli/node_modules/evp_bytestokey": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, + "node_modules/ganache-cli/node_modules/execa": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/find-up": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, + "node_modules/ganache-cli/node_modules/get-caller-file": { + "version": "2.0.5", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/ganache-cli/node_modules/get-stream": { + "version": "4.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "pump": "^3.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "node_modules/ganache-cli/node_modules/hash-base": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/ganache-cli/node_modules/hash.js": { + "version": "1.1.7", + "inBundle": true, + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/ganache-cli/node_modules/hmac-drbg": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/finalhandler/node_modules/ms": { + "node_modules/ganache-cli/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/invert-kv": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, + "node_modules/ganache-cli/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "node": ">=4" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/ganache-cli/node_modules/is-hex-prefixed": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/ganache-cli/node_modules/is-stream": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/keccak": { + "version": "3.0.1", + "hasInstallScript": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=8" + "node": ">=10.0.0" } }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "node_modules/ganache-cli/node_modules/lcid": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "invert-kv": "^2.0.0" }, "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/ganache-cli/node_modules/locate-path": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/find-cache-dir/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, + "node_modules/ganache-cli/node_modules/map-age-cleaner": { + "version": "0.1.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, "engines": { "node": ">=6" } }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/ganache-cli/node_modules/md5.js": { + "version": "1.3.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, + "node_modules/ganache-cli/node_modules/mem": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/find-up": { + "node_modules/ganache-cli/node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^2.0.0" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, + "node_modules/ganache-cli/node_modules/minimalistic-assert": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/nice-try": { + "version": "1.0.5", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/node-addon-api": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/node-gyp-build": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", "bin": { - "flat": "cli.js" + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/ganache-cli/node_modules/npm-run-path": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "path-key": "^2.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=4" } }, - "node_modules/flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" - }, - "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==" - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, + "node_modules/ganache-cli/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "wrappy": "1" } }, - "node_modules/flush-write-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, + "node_modules/ganache-cli/node_modules/os-locale": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/flush-write-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "node_modules/ganache-cli/node_modules/p-defer": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" - }, - "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/ganache-cli/node_modules/p-finally": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">=4" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "peer": true, + "node_modules/ganache-cli/node_modules/p-is-promise": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + "node_modules/ganache-cli/node_modules/p-limit": { + "version": "2.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, + "node_modules/ganache-cli/node_modules/p-locate": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=6" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "node_modules/ganache-cli/node_modules/p-try": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, + "node_modules/ganache-cli/node_modules/path-exists": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=4" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/ganache-cli/node_modules/path-key": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "peer": true, + "node_modules/ganache-cli/node_modules/pbkdf2": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "map-cache": "^0.2.2" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" + "node_modules/ganache-cli/node_modules/pump": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, + "node_modules/ganache-cli/node_modules/randombytes": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "safe-buffer": "^5.1.0" + } + }, + "node_modules/ganache-cli/node_modules/readable-stream": { + "version": "3.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, + "node_modules/ganache-cli/node_modules/require-directory": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/require-main-filename": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/ripemd160": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, + "node_modules/ganache-cli/node_modules/rlp": { + "version": "2.2.6", + "inBundle": true, + "license": "MPL-2.0", "dependencies": { - "safe-buffer": "~5.1.0" + "bn.js": "^4.11.1" + }, + "bin": { + "rlp": "bin/rlp" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, + "node_modules/ganache-cli/node_modules/safe-buffer": { + "version": "5.2.1", "funding": [ { "type": "github", @@ -8712,203 +12731,333 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "node_modules/ganache-cli/node_modules/scrypt-js": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/secp256k1": { + "version": "4.0.2", + "hasInstallScript": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=12" + "node": ">=10.0.0" } }, - "node_modules/fs-extra/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/ganache-cli/node_modules/semver": { + "version": "5.7.1", + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-cli/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/setimmediate": { + "version": "1.0.5", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/sha.js": { + "version": "2.4.11", + "inBundle": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { - "universalify": "^2.0.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "bin": { + "sha.js": "bin.js" } }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/ganache-cli/node_modules/shebang-command": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=0.10.0" } }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "node_modules/ganache-cli/node_modules/shebang-regex": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/signal-exit": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/source-map": { + "version": "0.6.1", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/source-map-support": { + "version": "0.5.12", + "inBundle": true, + "license": "MIT", "dependencies": { - "minipass": "^2.6.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, + "node_modules/ganache-cli/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "safe-buffer": "~5.2.0" } }, - "node_modules/fs-write-stream-atomic/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, + "node_modules/ganache-cli/node_modules/string-width": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/fs-write-stream-atomic/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, + "node_modules/ganache-cli/node_modules/strip-ansi": { + "version": "5.2.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/fs.realpath": { + "node_modules/ganache-cli/node_modules/strip-eof": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "inBundle": true, + "license": "MIT", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=0.10.0" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "node_modules/ganache-cli/node_modules/strip-hex-prefix": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "is-hex-prefixed": "1.0.0" }, "engines": { - "node": ">=0.6" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/ganache-cli/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/which": { + "version": "1.3.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "minimist": "^1.2.6" + "isexe": "^2.0.0" }, "bin": { - "mkdirp": "bin/cmd.js" + "which": "bin/which" } }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/ganache-cli/node_modules/which-module": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/wrap-ansi": { + "version": "5.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=6" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "node_modules/ganache-cli/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "node_modules/ganache-cli/node_modules/y18n": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" }, - "node_modules/ganache": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.0.5.tgz", - "integrity": "sha512-CMRj6dwl1WtE3/4uLHhn/TcZA6QB0SM9YFxSp0ToeGJQ+9HYyfPlzuDE7CzniN+PklEHaCcpgoRYAq9Py9m6WA==", - "dev": true, - "hasShrinkwrap": true, + "node_modules/ganache-cli/node_modules/yargs": { + "version": "13.2.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "@trufflesuite/bigint-buffer": "1.1.9", - "emittery": "0.10.0", - "keccak": "3.0.1", - "leveldown": "6.1.0", - "secp256k1": "4.0.2" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "node_modules/ganache-cli/node_modules/yargs-parser": { + "version": "13.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/ganache-time-traveler": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/ganache-time-traveler/-/ganache-time-traveler-1.0.16.tgz", + "integrity": "sha512-oUaQge9tiT/zzcGqehqJcoH10claKi9QFhq7zI1Wa3KtdPobjgLVMYvqXCJuHCAZoS7sHvLB/N/rSnhmivxaKw==" + }, + "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz", + "integrity": "sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw==", + "hasInstallScript": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "node-gyp-build": "4.4.0" }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer/node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "inBundle": true, + "license": "MIT", "bin": { - "ganache": "dist/node/cli.js", - "ganache-cli": "dist/node/cli.js" - }, - "optionalDependencies": { - "bufferutil": "4.0.5", - "utf-8-validate": "5.0.7" + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/ganache/node_modules/@trufflesuite/bigint-buffer": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz", - "integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==", - "dev": true, + "node_modules/ganache/node_modules/@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "inBundle": true, + "license": "MIT", "dependencies": { - "node-gyp-build": "4.3.0" + "@types/node": "*" } }, + "node_modules/ganache/node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache/node_modules/@types/node": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz", + "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw==", + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache/node_modules/@types/seedrandom": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.1.tgz", + "integrity": "sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==", + "inBundle": true, + "license": "MIT" + }, "node_modules/ganache/node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "node_modules/ganache/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" }, "node_modules/ganache/node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true + "inBundle": true, + "license": "MIT" }, "node_modules/ganache/node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -8918,7 +13067,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", - "dev": true, "optional": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -8928,16 +13076,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.0.tgz", "integrity": "sha512-M5imwzQn6y+ODBfgi+cfgZv2hIUI6oYU/0f35Mdb1ujGeqeoI5tOnl9Q13DTH7LW+7er+NYq8stNOKZD/Z3U/A==", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { "queue-tick": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/ganache/node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -8948,17 +13101,32 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/ganache/node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "inBundle": true, + "license": "MIT" + }, "node_modules/ganache/node_modules/emittery": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } }, "node_modules/ganache/node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -8968,7 +13136,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -8979,46 +13148,91 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "BSD-3-Clause" }, "node_modules/ganache/node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "inBundle": true, + "license": "ISC" }, "node_modules/ganache/node_modules/is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, "node_modules/ganache/node_modules/keccak": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", - "dev": true, + "hasInstallScript": true, + "inBundle": true, + "license": "MIT", "dependencies": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" } }, "node_modules/ganache/node_modules/leveldown": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", - "dev": true, + "hasInstallScript": true, + "inBundle": true, + "license": "MIT", "dependencies": { "abstract-leveldown": "^7.2.0", "napi-macros": "~2.0.0", "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=10.12.0" } }, "node_modules/ganache/node_modules/leveldown/node_modules/abstract-leveldown": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { "buffer": "^6.0.3", "catering": "^2.0.0", @@ -9026,81 +13240,122 @@ "level-concat-iterator": "^3.0.0", "level-supports": "^2.0.1", "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=10" } }, "node_modules/ganache/node_modules/leveldown/node_modules/level-concat-iterator": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { "catering": "^2.1.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/ganache/node_modules/leveldown/node_modules/level-supports": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "dev": true + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/ganache/node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "inBundle": true, + "license": "ISC" }, "node_modules/ganache/node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true + "inBundle": true, + "license": "MIT" }, "node_modules/ganache/node_modules/napi-macros": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true + "inBundle": true, + "license": "MIT" }, "node_modules/ganache/node_modules/node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true + "inBundle": true, + "license": "MIT" }, "node_modules/ganache/node_modules/node-gyp-build": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true + "inBundle": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } }, "node_modules/ganache/node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" }, "node_modules/ganache/node_modules/queue-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==", - "dev": true + "inBundle": true, + "license": "MIT" }, "node_modules/ganache/node_modules/secp256k1": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", - "dev": true, + "hasInstallScript": true, + "inBundle": true, + "license": "MIT", "dependencies": { "elliptic": "^6.5.2", "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" } }, "node_modules/ganache/node_modules/utf-8-validate": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", - "dev": true, "optional": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -9118,7 +13373,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -9259,30 +13513,6 @@ "process": "^0.11.10" } }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/globals": { "version": "13.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", @@ -9298,43 +13528,37 @@ } }, "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=14.16" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, "node_modules/got/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "engines": { - "node": ">=6" + "node": ">=12.20" } }, "node_modules/graceful-fs": { @@ -9343,15 +13567,15 @@ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, "node_modules/graphdb": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/graphdb/-/graphdb-2.0.0.tgz", - "integrity": "sha512-9YzAzmTHhUrdJiogQvjRmRlW/SLO6GLE2IUwML4fN8EXbJLz7ABWjFwB7nPJU9fROS+faklNPmKMfP8dbr/aAw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/graphdb/-/graphdb-2.0.2.tgz", + "integrity": "sha512-ORbS7yw/kTUdKXyeO7QaXx1I3fxigej3KQQdrVSpu0ZQ1W7OVQHDAd/Gu+x2clpwm6sela94Uh/+YKkQGbZqmA==", "dependencies": { - "axios": "^0.21.1", + "axios": "^0.21.4", "base64url": "^3.0.1", "eslint-config-google": "^0.13.0", "jsonld-streaming-parser": "^2.2.0", - "n3": "^1.7.0", + "n3": "^1.16.2", "pino": "^5.17.0", "qs": "^6.9.4", "rdfxml-streaming-parser": "^1.4.0", @@ -9424,11 +13648,15 @@ "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, "engines": { "node": ">=4.x" } }, + "node_modules/hamming-distance": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hamming-distance/-/hamming-distance-1.0.0.tgz", + "integrity": "sha512-hYz2IIKtyuZGfOqCs7skNiFEATf+v9IUNSOaQSr6Ll4JOxxWhOvXvc3mIdCW82Z3xW+zUoto7N/ssD4bDxAWoA==" + }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -9462,9 +13690,9 @@ } }, "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9477,6 +13705,17 @@ "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbol-support-x": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", @@ -9486,9 +13725,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -9583,15 +13822,6 @@ "node": ">=0.10.0" } }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -9667,16 +13897,42 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, "bin": { "he": "bin/he" } }, + "node_modules/header-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", + "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.3" + } + }, + "node_modules/header-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/header-case/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, "node_modules/heap": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz", "integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=" }, + "node_modules/hex-to-binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hex-to-binary/-/hex-to-binary-1.0.1.tgz", + "integrity": "sha512-m1ykzQs9fKfgfzXj2oV5xAWoyGaudwa0qxY4IDUOgY8J69fKY7mXdwTfQHtS3Y5kglpwM7UmyCSQFKnL87FrdQ==" + }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -9761,7 +14017,7 @@ "node_modules/http-https": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" }, "node_modules/http-link-header": { "version": "1.0.3", @@ -9800,6 +14056,18 @@ "npm": ">=1.3.7" } }, + "node_modules/http2-wrapper": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", + "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -9852,7 +14120,7 @@ "node_modules/idna-uts46-hx/node_modules/punycode": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", "engines": { "node": ">=6" } @@ -9896,6 +14164,11 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, "node_modules/immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", @@ -9916,15 +14189,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -10009,9 +14273,9 @@ } }, "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" }, "node_modules/ip-address": { "version": "8.1.0", @@ -10149,7 +14413,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -10205,18 +14468,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", @@ -10323,6 +14574,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -10370,22 +14629,6 @@ "npm": ">=3" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-ip": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", @@ -10402,10 +14645,23 @@ "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-1.0.1.tgz", "integrity": "sha512-DhWU/kqY7X2F6KrrVTu7mHlbd2Pbo4D1YkAzasBMjQs6lJAoefxaA6m6CpSX0K6pjt9D0b9PNFI5zduy/vzOYw==" }, + "node_modules/is-lower-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", + "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", + "dependencies": { + "lower-case": "^1.1.0" + } + }, + "node_modules/is-lower-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "engines": { "node": ">= 0.4" }, @@ -10413,31 +14669,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10448,15 +14691,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", @@ -10465,15 +14699,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -10528,6 +14753,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -10568,14 +14804,14 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", "has-tostringtag": "^1.0.0" }, "engines": { @@ -10594,7 +14830,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "engines": { "node": ">=10" }, @@ -10602,6 +14837,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-upper-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", + "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", + "dependencies": { + "upper-case": "^1.1.0" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -10620,12 +14874,6 @@ "node": ">=4" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -11038,7 +15286,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -11059,9 +15306,9 @@ } }, "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", @@ -11070,6 +15317,28 @@ "dev": true, "peer": true }, + "node_modules/json-pointer": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", + "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", + "dependencies": { + "foreach": "^2.0.4" + } + }, + "node_modules/json-rpc-engine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", + "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", + "dependencies": { + "eth-rpc-errors": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" + }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -11114,7 +15383,7 @@ "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -11193,6 +15462,14 @@ "node >= 0.2.0" ] }, + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "engines": { + "node": "*" + } + }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -11208,6 +15485,35 @@ "node": "*" } }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -11236,6 +15542,31 @@ "node": ">=4.0" } }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/k-bucket": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-5.1.0.tgz", @@ -11258,17 +15589,28 @@ "node": ">=10.0.0" } }, + "node_modules/keccak256": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", + "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", + "dependencies": { + "bn.js": "^5.2.0", + "buffer": "^6.0.3", + "keccak": "^3.0.2" + } + }, "node_modules/keypair": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.4.tgz", "integrity": "sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg==" }, "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.3.tgz", + "integrity": "sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==", "dependencies": { - "json-buffer": "3.0.0" + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" } }, "node_modules/kind-of": { @@ -11382,16 +15724,117 @@ "language-subtag-registry": "~0.3.2" } }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, + "node_modules/level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" + }, + "node_modules/level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "dependencies": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + } + }, + "node_modules/level-iterator-stream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/level-iterator-stream/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "dependencies": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + } + }, + "node_modules/level-ws/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/level-ws/node_modules/object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" + }, + "node_modules/level-ws/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "dependencies": { - "package-json": "^6.3.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/level-ws/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/level-ws/node_modules/xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dependencies": { + "object-keys": "~0.4.0" }, "engines": { - "node": ">=8" + "node": ">=0.4" + } + }, + "node_modules/levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "dependencies": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "node_modules/levelup/node_modules/semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "bin": { + "semver": "bin/semver" } }, "node_modules/leven": { @@ -11511,9 +15954,9 @@ } }, "node_modules/libp2p-interfaces": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-1.1.0.tgz", - "integrity": "sha512-5nc/HZJgeks1qfkyYQdI84hcZLF4SJKJSUx33JpO0w7v7R+obz+HOwk0GSa4/ZvQHjX+/+OWC4NYVA0yZxZXag==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-1.3.1.tgz", + "integrity": "sha512-Bh991Nv2KT/jZ7DjPd/zqhk8cCtkHl6OWw8lyK7wBX7Aj3/ezGwjoDABJzKgt1lbvcgCeQIbzPiIbaKj4DUI4w==", "dependencies": { "abort-controller": "^3.0.0", "abortable-iterator": "^3.0.0", @@ -11522,14 +15965,36 @@ "it-length-prefixed": "^5.0.2", "it-pipe": "^1.1.0", "it-pushable": "^1.4.2", - "libp2p-crypto": "^0.19.5", + "libp2p-crypto": "^0.20.0", "multiaddr": "^10.0.0", "multiformats": "^9.1.2", - "peer-id": "^0.15.0", + "p-queue": "^6.6.2", + "peer-id": "^0.15.4", "protobufjs": "^6.10.2", "uint8arrays": "^3.0.0" } }, + "node_modules/libp2p-interfaces/node_modules/libp2p-crypto": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.20.0.tgz", + "integrity": "sha512-WgIW9rYcWaO/5j2T6NW3R6Q46yvp2ZfFErqRMbi4/pOTL3T7+OROYpL/1iWVksWkXyurU/t2qFsIijWMxR5C4Q==", + "dependencies": { + "err-code": "^3.0.1", + "iso-random-stream": "^2.0.0", + "keypair": "^1.0.4", + "multiformats": "^9.4.5", + "noble-ed25519": "^1.2.6", + "noble-secp256k1": "^1.2.10", + "node-forge": "^0.10.0", + "pem-jwk": "^2.0.0", + "protobufjs": "^6.11.2", + "uint8arrays": "^3.0.0", + "ursa-optional": "^0.10.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/libp2p-kad-dht": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/libp2p-kad-dht/-/libp2p-kad-dht-0.24.2.tgz", @@ -11564,12 +16029,11 @@ } }, "node_modules/libp2p-mplex": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.4.tgz", - "integrity": "sha512-a8Oy68EXaSBBXGOGYMuwBcpnynkhqAFJ3LiyV24u9fE4wTxvuWTr0prSyKc+KC8QsLuX3A+CAdSgxqm09NbumQ==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.7.tgz", + "integrity": "sha512-21VV0DZWuOsHgitWy1GZD1M/kki3a/hVoAJ5QC48p01JNSK5W8gxRiZtq7cCGJ/xNpbQxvMlMtS5eq8CFRlysg==", "dependencies": { - "abort-controller": "^3.0.0", - "abortable-iterator": "^3.0.0", + "abortable-iterator": "^3.0.2", "bl": "^5.0.0", "debug": "^4.3.1", "err-code": "^3.0.1", @@ -11899,22 +16363,83 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.flatmap": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", + "integrity": "sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==" + }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -11924,7 +16449,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -11988,8 +16512,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -12014,12 +16536,28 @@ "tslib": "^2.0.3" } }, + "node_modules/lower-case-first": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", + "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", + "dependencies": { + "lower-case": "^1.1.2" + } + }, + "node_modules/lower-case-first/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lru-cache": { @@ -12041,6 +16579,11 @@ "es5-ext": "~0.10.2" } }, + "node_modules/ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==" + }, "node_modules/mafmt": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/mafmt/-/mafmt-10.0.0.tgz", @@ -12114,6 +16657,27 @@ "node": ">= 0.6" } }, + "node_modules/memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/memdown/node_modules/abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dependencies": { + "xtend": "~4.0.0" + } + }, "node_modules/memoizee": { "version": "0.4.15", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", @@ -12201,6 +16765,67 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, + "node_modules/merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "dependencies": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/merkle-patricia-tree/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" + }, + "node_modules/merkle-patricia-tree/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/merkle-patricia-tree/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/merkle-patricia-tree/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/merkle-tools": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merkle-tools/-/merkle-tools-1.4.1.tgz", @@ -12209,6 +16834,26 @@ "js-sha3": "^0.8.0" } }, + "node_modules/merkletreejs": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.2.32.tgz", + "integrity": "sha512-TostQBiwYRIwSE5++jGmacu3ODcKAgqb0Y/pnIohXS7sWxh1gCkSptbmF1a43faehRDpcHf7J/kv0Ml2D/zblQ==", + "dependencies": { + "bignumber.js": "^9.0.1", + "buffer-reverse": "^1.0.1", + "crypto-js": "^3.1.9-1", + "treeify": "^1.1.0", + "web3-utils": "^1.3.4" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/merkletreejs/node_modules/crypto-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", + "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -12307,6 +16952,11 @@ "miller-rabin": "bin/miller-rabin" } }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -12356,7 +17006,7 @@ "node_modules/min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dependencies": { "dom-walk": "^0.1.0" } @@ -12507,7 +17157,7 @@ "node_modules/mkdirp-promise": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", "dependencies": { "mkdirp": "*" @@ -12520,7 +17170,6 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", @@ -12563,7 +17212,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12577,14 +17225,12 @@ "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/mocha/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -12595,7 +17241,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12606,14 +17251,12 @@ "node_modules/mocha/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/mocha/node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, "engines": { "node": ">=0.3.1" } @@ -12622,7 +17265,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -12638,7 +17280,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -12647,7 +17288,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -12659,7 +17299,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -12674,7 +17313,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12682,17 +17320,10 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -12707,7 +17338,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -12722,7 +17352,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -12731,7 +17360,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12746,7 +17374,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12763,7 +17390,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -12772,7 +17398,6 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -12790,7 +17415,6 @@ "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, "engines": { "node": ">=10" } @@ -12800,10 +17424,18 @@ "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" }, + "node_modules/mock-socket": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.5.tgz", + "integrity": "sha512-3DeNIcsQixWHHKk6NdoBhWI4t1VMj5/HzfnI1rE/pLl5qKx7+gd4DNA07ehTaZ6MoUU053si6Hd+YtiM/tQZfg==", + "engines": { + "node": ">= 8" + } + }, "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { "node": "*" } @@ -12866,9 +17498,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multiaddr": { "version": "10.0.1", @@ -12931,9 +17563,9 @@ "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" }, "node_modules/multiformats": { - "version": "9.4.7", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.4.7.tgz", - "integrity": "sha512-fZbcdf7LnvokPAZYkv4TLXe7PAg9sQ5qLXcwrAmZOloEb2+5FtFiAY+l3/9wsu4oTJXTV3JSggFQQ2dJLS01vA==" + "version": "9.7.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.7.1.tgz", + "integrity": "sha512-TaVmGEBt0fhxiNJMGphBfB+oGvUxFs8KgGvgl8d3C+GWtrFcvXdJ2196eg+dYhmSFClmgFfSfJEklo+SZzdNuw==" }, "node_modules/multihashes": { "version": "0.4.21", @@ -13039,9 +17671,9 @@ } }, "node_modules/n3": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.12.2.tgz", - "integrity": "sha512-vY1HBEraMPWQFLEK6sn67DeGMqTuwXnlEYpZ8gTVukKQSz2f44d+t+ZcmwEt8c99FlVAbpmMb/435Q8t0OC+7w==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.16.2.tgz", + "integrity": "sha512-5vYa2HuNEJ+a26FEs4FGgfFLgaPOODaZpJlc7FS0eUjDumc4uK0cvx216PjKXBkLzmAsSqGgQPwqztcLLvwDsw==", "dependencies": { "queue-microtask": "^1.1.2", "readable-stream": "^3.6.0" @@ -13083,7 +17715,7 @@ "node_modules/nano-json-stream-parser": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" }, "node_modules/nanoid": { "version": "3.3.1", @@ -13265,6 +17897,34 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, + "node_modules/nise": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", + "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": ">=5", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/nise/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -13274,11 +17934,55 @@ "tslib": "^2.0.3" } }, + "node_modules/noble-ed25519": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/noble-ed25519/-/noble-ed25519-1.2.6.tgz", + "integrity": "sha512-zfnWqg9FVMp8CnzUpAjbt1nDXpDjCvxYiCXdnW1mY8zQHw/6twUlkFm14VPdojVzc0kcd+i9zT79+26GcNbsuQ==", + "deprecated": "Switch to namespaced @noble/ed25519 for security and feature updates" + }, + "node_modules/noble-secp256k1": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/noble-secp256k1/-/noble-secp256k1-1.2.14.tgz", + "integrity": "sha512-GSCXyoZBUaaPwVWdYncMEmzlSUjF9J/YeEHpklYJCyg8wPuJP3NzDx0BkiwArzINkdX2HJHvUJhL6vVWPOQQcg==", + "deprecated": "Switch to namespaced @noble/secp256k1 for security and feature updates" + }, + "node_modules/nock": { + "version": "13.2.9", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz", + "integrity": "sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA==", + "dependencies": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.21", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">= 10.13" + } + }, "node_modules/node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { "name": "@achingbrain/node-fetch", "version": "2.6.7", @@ -13303,6 +18007,17 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-interval-tree": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-interval-tree/-/node-interval-tree-1.3.3.tgz", + "integrity": "sha512-K9vk96HdTK5fEipJwxSvIIqwTqr4e3HRJeJrNxBSeVMNSC/JWARRaX7etOLOuTmrRMeOI/K5TCJu3aWIwZiNTw==", + "dependencies": { + "shallowequal": "^1.0.2" + }, + "engines": { + "node": ">= 7.6.0" + } + }, "node_modules/node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -13410,15 +18125,14 @@ } }, "node_modules/node-releases": { - "version": "1.1.75", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", - "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node_modules/nodemon": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -13428,10 +18142,10 @@ "minimatch": "^3.0.4", "pstree.remy": "^1.1.8", "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", "supports-color": "^5.5.0", "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" + "undefsafe": "^2.0.5" }, "bin": { "nodemon": "bin/nodemon.js" @@ -13462,6 +18176,14 @@ "semver": "bin/semver" } }, + "node_modules/nofilter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", + "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", + "engines": { + "node": ">=8" + } + }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -13503,17 +18225,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm-run-path": { @@ -13841,7 +18565,7 @@ "node_modules/oboe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", "dependencies": { "http-https": "^1.0.0" } @@ -13914,6 +18638,11 @@ "node": ">= 0.8.0" } }, + "node_modules/original-require": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", + "integrity": "sha512-5vdKMbE58WaE61uVD+PKyh8xdM398UnjPBLotW2sjG5MzHARwta/+NtMBCBA0t2WQblGYBvq5vsiZpWokwno+A==" + }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -14168,30 +18897,6 @@ "node": ">=8" } }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/pad-right": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", @@ -14246,6 +18951,27 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/param-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/param-case/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -14276,9 +19002,9 @@ "dev": true }, "node_modules/parse-headers": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz", - "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" }, "node_modules/parse-json": { "version": "4.0.0", @@ -14328,6 +19054,27 @@ "dev": true, "peer": true }, + "node_modules/path-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", + "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/path-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/path-case/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -14409,12 +19156,12 @@ } }, "node_modules/peer-id": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.15.3.tgz", - "integrity": "sha512-pass5tk6Fbaz7PTD/3fJg2KWqaproHY0B0Ki8GQMEuMjkoLRcS2Vqt9yy6ob/+8uGBmWjRLtbMhaLV4HTyMDfw==", + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.15.4.tgz", + "integrity": "sha512-MDoBIMZYwQIAHaZQUwsIcvoFgdbIl5GtZMwSkXpIYvc5v0TSDv+u8WsTKrKt2Vv28tHFFDJQdVzu3T4qTPzK+w==", "dependencies": { "class-is": "^1.1.0", - "libp2p-crypto": "^0.19.0", + "libp2p-crypto": "^0.20.0", "minimist": "^1.2.5", "multiformats": "^9.4.5", "protobufjs": "^6.10.2", @@ -14427,6 +19174,27 @@ "node": ">=14.0.0" } }, + "node_modules/peer-id/node_modules/libp2p-crypto": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.20.0.tgz", + "integrity": "sha512-WgIW9rYcWaO/5j2T6NW3R6Q46yvp2ZfFErqRMbi4/pOTL3T7+OROYpL/1iWVksWkXyurU/t2qFsIijWMxR5C4Q==", + "dependencies": { + "err-code": "^3.0.1", + "iso-random-stream": "^2.0.0", + "keypair": "^1.0.4", + "multiformats": "^9.4.5", + "noble-ed25519": "^1.2.6", + "noble-secp256k1": "^1.2.10", + "node-forge": "^0.10.0", + "pem-jwk": "^2.0.0", + "protobufjs": "^6.11.2", + "uint8arrays": "^3.0.0", + "ursa-optional": "^0.10.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/pem-jwk": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pem-jwk/-/pem-jwk-2.0.0.tgz", @@ -14446,11 +19214,15 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -14474,8 +19246,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -14619,6 +19389,14 @@ "node": ">=0.10.0" } }, + "node_modules/precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -14628,11 +19406,11 @@ } }, "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/prettier": { @@ -14650,17 +19428,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "bin": { - "printj": "bin/printj.njs" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/private-ip": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/private-ip/-/private-ip-2.2.1.tgz", @@ -14728,6 +19495,18 @@ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-1.1.6.tgz", "integrity": "sha1-zQTv9G9clcOn0EVZHXm14+AfEtc=" }, + "node_modules/promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==", + "dependencies": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", @@ -14740,15 +19519,23 @@ "react-is": "^16.8.1" } }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "engines": { + "node": ">= 8" + } + }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" }, "node_modules/protobufjs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", - "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -14785,8 +19572,7 @@ "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, "node_modules/pseudomap": { "version": "1.0.2", @@ -14817,6 +19603,11 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -14891,16 +19682,13 @@ "node": ">=6" } }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" + "node_modules/pure-rand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.1.tgz", + "integrity": "sha512-ksWccjmXOHU2gJBnH0cK1lSYdvSZ0zLoCMSz/nTGh6hDvCSgcRxDyIcOBD6KNxFz3xhMPm/T267Tbe2JRymKEQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" } }, "node_modules/qs": { @@ -14975,6 +19763,17 @@ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz", "integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==" }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -15328,7 +20127,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -15352,6 +20150,25 @@ "ms": "^2.1.1" } }, + "node_modules/redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "dependencies": { + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" + } + }, + "node_modules/redux-saga": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.0.0.tgz", + "integrity": "sha512-GvJWs/SzMvEQgeaw6sRMXnS2FghlvEGsHiEtTLpJqc/FHF3I5EE/B+Hq5lyHZ8LSoT2r/X/46uWvkdCnK9WgHA==", + "dependencies": { + "@redux-saga/core": "^1.0.0" + } + }, "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -15361,9 +20178,7 @@ "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true, - "peer": true + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "node_modules/regex-not": { "version": "1.0.2", @@ -15425,14 +20240,13 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "peer": true, + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -15452,30 +20266,6 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/relative-to-absolute-iri": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.6.tgz", @@ -15602,6 +20392,29 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, + "node_modules/reselect": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz", + "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==" + }, + "node_modules/reselect-tree": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/reselect-tree/-/reselect-tree-1.3.7.tgz", + "integrity": "sha512-kZN+C1cVJ6fFN2smSb0l4UvYZlRzttgnu183svH4NrU22cBY++ikgr2QT75Uuk4MYpv5gXSVijw4c5U6cx6GKg==", + "dependencies": { + "debug": "^3.1.0", + "json-pointer": "^0.6.1", + "reselect": "^4.0.0" + } + }, + "node_modules/reselect-tree/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -15614,6 +20427,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -15652,11 +20470,22 @@ "peer": true }, "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dependencies": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/responselike/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" } }, "node_modules/restore-cursor": { @@ -15751,11 +20580,6 @@ "rlp": "bin/rlp" } }, - "node_modules/rlp/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, "node_modules/rolling-rate-limiter": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/rolling-rate-limiter/-/rolling-rate-limiter-0.2.13.tgz", @@ -15777,11 +20601,15 @@ "aproba": "^1.1.1" } }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" + }, "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", - "dev": true, + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", "dependencies": { "tslib": "^2.1.0" } @@ -15791,6 +20619,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/safe-event-emitter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", + "deprecated": "Renamed to @metamask/safe-event-emitter", + "dependencies": { + "events": "^3.0.0" + } + }, "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", @@ -15893,10 +20730,18 @@ "integrity": "sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ=", "dev": true }, + "node_modules/semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -15907,27 +20752,6 @@ "node": ">=10" } }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -15969,6 +20793,36 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, + "node_modules/sentence-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", + "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", + "dependencies": { + "no-case": "^2.2.0", + "upper-case-first": "^1.1.2" + } + }, + "node_modules/sentence-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/sentence-case/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/sentence-case/node_modules/upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", + "dependencies": { + "upper-case": "^1.1.1" + } + }, "node_modules/seq-queue": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", @@ -16083,7 +20937,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -16127,6 +20980,14 @@ "resolved": "https://registry.npmjs.org/set-delayed-interval/-/set-delayed-interval-1.0.0.tgz", "integrity": "sha512-29fhAwuZlLcuBnW/EwxvLcg2D3ELX+VBDNhnavs3YYkab72qmrcSeQNVdzl8EcPPahGQXhBM6MKdPLCQGMDakw==" }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -16165,6 +21026,11 @@ "sha.js": "bin.js" } }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -16236,6 +21102,17 @@ "simple-concat": "^1.0.0" } }, + "node_modules/simple-get/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/simple-git": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.7.1.tgz", @@ -16263,10 +21140,74 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, - "node_modules/sleep-async": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sleep-async/-/sleep-async-1.0.5.tgz", - "integrity": "sha512-G2B+GBBshG+gSKZZeCTX5ONnF7XVUVpYP0O4QYWmXH6XIpEUfcFbWWwQKleZixg68PWEArvVEi23159F7ohlUQ==" + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sinon": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.0.tgz", + "integrity": "sha512-ugA6BFmE+WrJdh0owRZHToLd32Uw3Lxq6E6LtNRU+xTVBefx632h03Q7apXWRsRdZAJ41LB8aUfn2+O4jsDNMw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^6.1.1", + "diff": "^5.0.0", + "nise": "^5.1.1", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/slice-ansi": { "version": "4.0.0", @@ -16323,6 +21264,27 @@ "node": ">=8.0.0" } }, + "node_modules/snake-case": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", + "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/snake-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/snake-case/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -16575,7 +21537,6 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -17045,17 +22006,17 @@ } }, "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "engines": { - "node": ">=0.8.0" + "node": ">=10.0.0" } }, "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "engines": { "node": ">=0.10.0" } @@ -17130,24 +22091,26 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17216,6 +22179,20 @@ "node": ">=4" } }, + "node_modules/swap-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", + "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", + "dependencies": { + "lower-case": "^1.1.1", + "upper-case": "^1.1.1" + } + }, + "node_modules/swap-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, "node_modules/swarm-js": { "version": "0.1.40", "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", @@ -17257,17 +22234,15 @@ "ieee754": "^1.1.13" } }, - "node_modules/swarm-js/node_modules/eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "node_modules/swarm-js/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/swarm-js/node_modules/fs-extra": { @@ -17283,7 +22258,7 @@ "node_modules/swarm-js/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "engines": { "node": ">=4" } @@ -17315,7 +22290,7 @@ "node_modules/swarm-js/node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "engines": { "node": ">=0.10.0" } @@ -17323,7 +22298,15 @@ "node_modules/swarm-js/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/swarm-js/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "engines": { "node": ">=0.10.0" } @@ -17339,7 +22322,7 @@ "node_modules/swarm-js/node_modules/p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", "dependencies": { "p-finally": "^1.0.0" }, @@ -17347,21 +22330,10 @@ "node": ">=4" } }, - "node_modules/swarm-js/node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/swarm-js/node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dependencies": { - "prepend-http": "^1.0.1" - }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "engines": { "node": ">=0.10.0" } @@ -17453,11 +22425,11 @@ } }, "node_modules/tar/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" @@ -17488,9 +22460,9 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "peer": true, "dependencies": { @@ -17824,7 +22796,7 @@ "node_modules/timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", "engines": { "node": ">=0.10.0" } @@ -17865,6 +22837,28 @@ "next-tick": "1" } }, + "node_modules/title-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", + "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.0.3" + } + }, + "node_modules/title-case/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/title-case/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -17888,7 +22882,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, "engines": { "node": ">=4" } @@ -17954,7 +22947,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -18127,11 +23119,48 @@ "node": "*" } }, + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, + "node_modules/truffle": { + "version": "5.5.26", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-5.5.26.tgz", + "integrity": "sha512-czL1BxabxFRhH8AK2LrF7d6hO8zS74meccM0dLxh78ahEAGx2BRPfw2dUZp2Ad5kVvVZGIedJeg9hhpXbVuIAw==", + "hasInstallScript": true, + "dependencies": { + "@truffle/db-loader": "^0.1.28", + "@truffle/debugger": "^11.0.4", + "app-module-path": "^2.2.0", + "ganache": "7.4.0", + "mocha": "9.2.2", + "original-require": "^1.0.1" + }, + "bin": { + "truffle": "build/cli.bundled.js" + }, + "optionalDependencies": { + "@truffle/db": "^1.0.18" + } + }, + "node_modules/truffle-assertions": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz", + "integrity": "sha512-9g2RhaxU2F8DeWhqoGQvL/bV8QVoSnQ6PY+ZPvYRP5eF7+/8LExb4mjLx/FeliLTjc3Tv1SABG05Gu5qQ/ErmA==", + "dependencies": { + "assertion-error": "^1.1.0", + "lodash.isequal": "^4.5.0" + } + }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -18154,9 +23183,9 @@ } }, "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/tty-browserify": { "version": "0.0.0", @@ -18181,6 +23210,11 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + }, "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -18243,6 +23277,27 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript-compare": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", + "integrity": "sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==", + "dependencies": { + "typescript-logic": "^0.0.0" + } + }, + "node_modules/typescript-logic": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/typescript-logic/-/typescript-logic-0.0.0.tgz", + "integrity": "sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==" + }, + "node_modules/typescript-tuple": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.1.tgz", + "integrity": "sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==", + "dependencies": { + "typescript-compare": "^0.0.2" + } + }, "node_modules/uglify-js": { "version": "3.15.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", @@ -18436,13 +23491,13 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { @@ -18460,6 +23515,14 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" }, + "node_modules/undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==", + "engines": { + "node": ">=12.18" + } + }, "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -18494,18 +23557,6 @@ "imurmurhash": "^0.1.4" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -18635,34 +23686,36 @@ "yarn": "*" } }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, + "node_modules/update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "browserslist-lint": "cli.js" }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==" + }, "node_modules/upper-case-first": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", @@ -18705,25 +23758,25 @@ } }, "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", "dependencies": { - "prepend-http": "^2.0.0" + "prepend-http": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/url-set-query": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" }, "node_modules/url-to-options": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", "engines": { "node": ">= 4" } @@ -18759,12 +23812,12 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.6.tgz", - "integrity": "sha512-hoY0gOf9EkCw+nimK21FVKHUIG1BMqSiRwxB/q3A9yKZOrOI99PP77BxmarDqWz6rG3vVYiBWfhG8z2Tl+7fZA==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", "hasInstallScript": true, "dependencies": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" }, "engines": { "node": ">=6.14.2" @@ -19051,7 +24104,7 @@ "node_modules/watchpack-chokidar2/node_modules/glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, "optional": true, "peer": true, @@ -19344,37 +24397,45 @@ "node": ">=0.10.0" } }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, "node_modules/web-streams-ponyfill": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/web-streams-ponyfill/-/web-streams-ponyfill-1.4.2.tgz", "integrity": "sha512-LCHW+fE2UBJ2vjhqJujqmoxh1ytEDEr0dPO3CabMdMDJPKmsaxzS90V1Ar6LtNE5VHLqxR4YMEj1i4lzMAccIA==" }, "node_modules/web3": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.6.0.tgz", - "integrity": "sha512-rWpXnO88MiVX5yTRqMBCVKASxc7QDkXZZUl1D48sKlbX4dt3BAV+nVMVUKCBKiluZ5Bp8pDrVCUdPx/jIYai5Q==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.5.tgz", + "integrity": "sha512-3jHZTWyXt975AOXgnZKayiSWDLpoSKk9fZtLk1hURQtt7AdSbXPT8AK9ooBCm0Dt3GYaOeNcHGaiHC3gtyqhLg==", "hasInstallScript": true, "dependencies": { - "web3-bzz": "1.6.0", - "web3-core": "1.6.0", - "web3-eth": "1.6.0", - "web3-eth-personal": "1.6.0", - "web3-net": "1.6.0", - "web3-shh": "1.6.0", - "web3-utils": "1.6.0" + "web3-bzz": "1.7.5", + "web3-core": "1.7.5", + "web3-eth": "1.7.5", + "web3-eth-personal": "1.7.5", + "web3-net": "1.7.5", + "web3-shh": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-bzz": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.6.0.tgz", - "integrity": "sha512-ugYV6BsinwhIi0CsLWINBz4mqN9wR9vNG0WmyEbdECjxcPyr6vkaWt4qi0zqlUxEnYAwGj4EJXNrbjPILntQTQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.5.tgz", + "integrity": "sha512-Z53sY0YK/losqjJncmL4vP0zZI9r6tiXg6o7R6e1JD2Iy7FH3serQvU+qXmPjqEBzsnhf8wTG+YcBPB3RHpr0Q==", "hasInstallScript": true, "dependencies": { "@types/node": "^12.12.6", - "got": "9.6.0", + "got": "12.1.0", "swarm-js": "^0.1.40" }, "engines": { @@ -19382,93 +24443,58 @@ } }, "node_modules/web3-bzz/node_modules/@types/node": { - "version": "12.20.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.29.tgz", - "integrity": "sha512-dU2ypz+gO5va1OBvs0iT3BNHG5SgTqRvq8r+kU3e/LAseKapUJ8zTUE9Ve9fTpi27tN/7ahOAhCJwQWsffvsyw==" + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" }, "node_modules/web3-core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.6.0.tgz", - "integrity": "sha512-o0WsLrJ2yD+HAAc29lGMWJef/MutTyuzpJC0UzLJtIAQJqtpDalzWINEu4j8XYXGk34N/V6vudtzRPo23QEE6g==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.5.tgz", + "integrity": "sha512-UgOWXZr1fR/3cUQJKWbfMwRxj1/N7o6RSd/dHqdXBlOD+62EjNZItFmLRg5veq5kp9YfXzrNw9bnDkXfsL+nKQ==", "dependencies": { - "@types/bn.js": "^4.11.5", + "@types/bn.js": "^5.1.0", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-requestmanager": "1.6.0", - "web3-utils": "1.6.0" + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-core-requestmanager": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-helpers": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.6.0.tgz", - "integrity": "sha512-H/IAH/0mrgvad/oxVKiAMC7qDzMrPPe/nRKmJOoIsupRg9/frvL62kZZiHhqVD1HMyyswbQFC69QRl7JqWzvxg==", - "dependencies": { - "web3-eth-iban": "1.6.0", - "web3-utils": "1.6.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-helpers/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.5.tgz", + "integrity": "sha512-lDDjTks6Q6aNUO87RYrY2xub3UWTKr/RIWxpHJODEqkLxZS1dWdyliJ6aIx3031VQwsNT5HE7NvABe/t0p3iDQ==", "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "web3-eth-iban": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-method": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.6.0.tgz", - "integrity": "sha512-cHekyEil4mtcCOk6Q1Zh4y+2o5pTwsLIxP6Bpt4BRtZgdsyPiadYJpkLAVT/quch5xN7Qs5ZwG5AvRCS3VwD2g==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.5.tgz", + "integrity": "sha512-ApTvq1Llzlbxmy0n4L7QaE6NodIsR80VJqk8qN4kLg30SGznt/pNJFebryLI2kpyDmxSgj1TjEWzmHJBp6FhYg==", "dependencies": { - "@ethereumjs/common": "^2.4.0", - "@ethersproject/transactions": "^5.0.0-beta.135", - "web3-core-helpers": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-utils": "1.6.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "@ethersproject/transactions": "^5.6.2", + "web3-core-helpers": "1.7.5", + "web3-core-promievent": "1.7.5", + "web3-core-subscriptions": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-promievent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.6.0.tgz", - "integrity": "sha512-ZzsevjMXWkhqW9dnVfTfb1OUcK7jKcKPvPIbQ4boJccNgvNZPZKlo8xB4pkAX38n4c59O5mC7Lt/z2QL/M5CeQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.5.tgz", + "integrity": "sha512-uZ1VRErVuhiLtHlyt3oEH/JSvAf6bWPndChHR9PG7i1Zfqm6ZVCeM91ICTPmiL8ddsGQOxASpnJk4vhApcTIww==", "dependencies": { "eventemitter3": "4.0.4" }, @@ -19482,27 +24508,27 @@ "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" }, "node_modules/web3-core-requestmanager": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.6.0.tgz", - "integrity": "sha512-CY5paPdiDXKTXPWaEUZekDfUXSuoE2vPxolwqzsvKwFWH5+H1NaXgrc+D5HpufgSvTXawTw0fy7IAicg8+PWqA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.5.tgz", + "integrity": "sha512-3KpfxW/wVH4mgwWEsSJGHKrtRVoijWlDxtUrm17xgtqRNZ2mFolifKnHAUKa0fY48C9CrxmcCiMIi3W4G6WYRw==", "dependencies": { "util": "^0.12.0", - "web3-core-helpers": "1.6.0", - "web3-providers-http": "1.6.0", - "web3-providers-ipc": "1.6.0", - "web3-providers-ws": "1.6.0" + "web3-core-helpers": "1.7.5", + "web3-providers-http": "1.7.5", + "web3-providers-ipc": "1.7.5", + "web3-providers-ws": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-subscriptions": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.6.0.tgz", - "integrity": "sha512-kY9WZUY/m1URSOv3uTLshoZD9ZDiFKReIzHuPUkxFpD5oYNmr1/aPQNPCrrMxKODR7UVX/D90FxWwCYqHhLaxQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.5.tgz", + "integrity": "sha512-YK6utQ7Wwjbe4XZOIA8quWGBPi1lFDS1A+jQYwxKKrCvm6BloBNc3FhvrcSYlDhLe/kOy8+2Je8i9amndgT4ww==", "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.6.0" + "web3-core-helpers": "1.7.5" }, "engines": { "node": ">=8.0.0" @@ -19514,99 +24540,80 @@ "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" }, "node_modules/web3-core/node_modules/@types/node": { - "version": "12.20.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.29.tgz", - "integrity": "sha512-dU2ypz+gO5va1OBvs0iT3BNHG5SgTqRvq8r+kU3e/LAseKapUJ8zTUE9Ve9fTpi27tN/7ahOAhCJwQWsffvsyw==" - }, - "node_modules/web3-core/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" }, "node_modules/web3-eth": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.6.0.tgz", - "integrity": "sha512-qJMvai//r0be6I9ghU24/152f0zgJfYC23TMszN3Y6jse1JtjCBP2TlTibFcvkUN1RRdIUY5giqO7ZqAYAmp7w==", - "dependencies": { - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-eth-accounts": "1.6.0", - "web3-eth-contract": "1.6.0", - "web3-eth-ens": "1.6.0", - "web3-eth-iban": "1.6.0", - "web3-eth-personal": "1.6.0", - "web3-net": "1.6.0", - "web3-utils": "1.6.0" + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.5.tgz", + "integrity": "sha512-BucjvqZyDWYkGlsFX+OnOBub0YutlC1KZiNGibdmvtNX0NQK+8iw1uzAoL9yTTwCSszL7lnkFe8N+HCOl9B4Dw==", + "dependencies": { + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-core-subscriptions": "1.7.5", + "web3-eth-abi": "1.7.5", + "web3-eth-accounts": "1.7.5", + "web3-eth-contract": "1.7.5", + "web3-eth-ens": "1.7.5", + "web3-eth-iban": "1.7.5", + "web3-eth-personal": "1.7.5", + "web3-net": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-abi": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.6.0.tgz", - "integrity": "sha512-fImomGE9McuTMJLwK8Tp0lTUzXqCkWeMm00qPVIwpJ/h7lCw9UFYV9+4m29wSqW6FF+FIZKwc6UBEf9dlx3orA==", - "dependencies": { - "@ethersproject/abi": "5.0.7", - "web3-utils": "1.6.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-abi/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.5.tgz", + "integrity": "sha512-qWHvF7sayxql9BD1yqK9sZRLBQ66eJzGeaU53Y1PRq2iFPrhY6NUWxQ3c3ps0rg+dyObvRbloviWpKXcS4RE/A==", "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-accounts": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.6.0.tgz", - "integrity": "sha512-2f6HS4KIH4laAsNCOfbNX3dRiQosqSY2TRK86C8jtAA/QKGdx+5qlPfYzbI2RjG81iayb2+mVbHIaEaBGZ8sGw==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.5.tgz", + "integrity": "sha512-AzMLoTj3RGwKpyp3x3TtHrEeU4VpR99iMOD6NKrWSDumS6QEi0lCo+y7QZhdTlINw3iIA3SFIdvbAOO4NCHSDg==", "dependencies": { - "@ethereumjs/common": "^2.3.0", - "@ethereumjs/tx": "^3.2.1", + "@ethereumjs/common": "^2.5.0", + "@ethereumjs/tx": "^3.3.2", "crypto-browserify": "3.12.0", "eth-lib": "0.2.8", "ethereumjs-util": "^7.0.10", "scrypt-js": "^3.0.1", "uuid": "3.3.2", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, + "node_modules/web3-eth-accounts/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/web3-eth-accounts/node_modules/eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, "node_modules/web3-eth-accounts/node_modules/uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -19616,238 +24623,121 @@ "uuid": "bin/uuid" } }, - "node_modules/web3-eth-accounts/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/web3-eth-contract": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.6.0.tgz", - "integrity": "sha512-ZUtO77zFnxuFtrc+D+iJ3AzNgFXAVcKnhEYN7f1PNz/mFjbtE6dJ+ujO0mvMbxIZF02t9IZv0CIXRpK0rDvZAw==", - "dependencies": { - "@types/bn.js": "^4.11.5", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-utils": "1.6.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-contract/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.5.tgz", + "integrity": "sha512-qab7NPJRKRlTs58ozsqK8YIEwWpxIm3vD/okSIKBGkFx5gIHWW+vGmMh5PDSfefLJM9rCd+T+Lc0LYvtME7uqg==", "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "@types/bn.js": "^5.1.0", + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-core-promievent": "1.7.5", + "web3-core-subscriptions": "1.7.5", + "web3-eth-abi": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-ens": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.6.0.tgz", - "integrity": "sha512-AG24PNv9qbYHSpjHcU2pViOII0jvIR7TeojJ2bxXSDqfcgHuRp3NZGKv6xFvT4uNI4LEQHUhSC7bzHoNF5t8CA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.5.tgz", + "integrity": "sha512-k1Q0msdRv/wac2egpZBIwG3n/sa/KdrVmVJvFm471gLTL4xfUizV5qJjkDVf+ikf9JyDvWJTs5eWNUUbOFIw/A==", "dependencies": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-eth-contract": "1.6.0", - "web3-utils": "1.6.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-promievent": "1.7.5", + "web3-eth-abi": "1.7.5", + "web3-eth-contract": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-iban": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.6.0.tgz", - "integrity": "sha512-HM/bKBS/e8qg0+Eh7B8C/JVG+GkR4AJty17DKRuwMtrh78YsonPj7GKt99zS4n5sDLFww1Imu/ZIk3+K5uJCjw==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.5.tgz", + "integrity": "sha512-mn2W5t/1IpL8OZvzAabLKT4kvwRnZSJ9K0tctndl9sDNWkfITYQibEEhUaNNA50Q5fJKgVudHI/m0gwIVTyG8Q==", "dependencies": { - "bn.js": "^4.11.9", - "web3-utils": "1.6.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-iban/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "bn.js": "^5.2.1", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-personal": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.6.0.tgz", - "integrity": "sha512-8ohf4qAwbShf4RwES2tLHVqa+pHZnS5Q6tV80sU//bivmlZeyO1W4UWyNn59vu9KPpEYvLseOOC6Muxuvr8mFQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.5.tgz", + "integrity": "sha512-txh2P/eN8I4AOUKFi9++KKddoD0tWfCuu9Y1Kc41jSRbk6smO88Fum0KWNmYFYhSCX2qiknS1DfqsONl3igoKQ==", "dependencies": { "@types/node": "^12.12.6", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-net": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-net": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-personal/node_modules/@types/node": { - "version": "12.20.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.29.tgz", - "integrity": "sha512-dU2ypz+gO5va1OBvs0iT3BNHG5SgTqRvq8r+kU3e/LAseKapUJ8zTUE9Ve9fTpi27tN/7ahOAhCJwQWsffvsyw==" - }, - "node_modules/web3-eth-personal/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" }, "node_modules/web3-net": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.6.0.tgz", - "integrity": "sha512-LFfG95ovTT2sNHkO1TEfsaKpYcxOSUtbuwHQ0K3G0e5nevKDJkPEFIqIcob40yiwcWoqEjENJP9Bjk8CRrZ99Q==", - "dependencies": { - "web3-core": "1.6.0", - "web3-core-method": "1.6.0", - "web3-utils": "1.6.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-net/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.5.tgz", + "integrity": "sha512-xwuCb2YWw49PmW81AJQ/G+Xi2ikRsYyZXSgyPt4LmZuKjiqg/6kSdK8lZvUi3Pi3wM+QDBXbpr73M/WEkW0KvA==", "dependencies": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "web3-core": "1.7.5", + "web3-core-method": "1.7.5", + "web3-utils": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-http": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.6.0.tgz", - "integrity": "sha512-sNxHFNv3lnxpmULt34AS6M36IYB/Hzm2Et4yPNzdP1XE644D8sQBZQZaJQdTaza5HfrlwoqU6AOK935armqGuA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.5.tgz", + "integrity": "sha512-vPgr4Kzy0M3CHtoP/Bh7qwK/D9h2fhjpoqctdMWVJseOfeTgfOphCKN0uwV8w2VpZgDPXA8aeTdBx5OjmDdStA==", "dependencies": { - "web3-core-helpers": "1.6.0", - "xhr2-cookies": "1.1.0" + "abortcontroller-polyfill": "^1.7.3", + "cross-fetch": "^3.1.4", + "es6-promise": "^4.2.8", + "web3-core-helpers": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-ipc": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.6.0.tgz", - "integrity": "sha512-ETYdfhpGiGoWpmmSJnONvnPfd3TPivHEGjXyuX+L5FUsbMOVZj9MFLNIS19Cx/YGL8UWJ/8alLJoTcWSIdz/aA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.5.tgz", + "integrity": "sha512-aNHx+RAROzO+apDEzy8Zncj78iqWBadIXtpmFDg7uiTn8i+oO+IcP1Yni7jyzkltsysVJHgHWG4kPx50ANCK3Q==", "dependencies": { "oboe": "2.1.5", - "web3-core-helpers": "1.6.0" + "web3-core-helpers": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-ws": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.6.0.tgz", - "integrity": "sha512-eNRmlhOPCpuVYwBrKBBQRLGPFb4U1Uo44r9EWV69Cpo4gP6XeBTl6nkawhLz6DS0fq79apyPfItJVuSfAy77pA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.5.tgz", + "integrity": "sha512-9uJNVVkIGC8PmM9kNbgPth56HDMSSsxZh3ZEENdwO3LNWemaADiQYUDCsD/dMVkn0xsGLHP5dgAy4Q5msqySLg==", "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.6.0", + "web3-core-helpers": "1.7.5", "websocket": "^1.0.32" }, "engines": { @@ -19860,26 +24750,26 @@ "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" }, "node_modules/web3-shh": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.6.0.tgz", - "integrity": "sha512-ymN0OFL81WtEeSyb+PFpuUv39fR3frGwsZnIg5EVPZvrOIdaDSFcGSLDmafUt0vKSubvLMVYIBOCskRD6YdtEQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.5.tgz", + "integrity": "sha512-aCIWJyLMH5H76OybU4ZpUCJ93yNOPATGhJ+KboRPU8QZDzS2CcVhtEzyl27bbvw+rSnVroMLqBgTXBB4mmKI7A==", "hasInstallScript": true, "dependencies": { - "web3-core": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-net": "1.6.0" + "web3-core": "1.7.5", + "web3-core-method": "1.7.5", + "web3-core-subscriptions": "1.7.5", + "web3-net": "1.7.5" }, "engines": { "node": ">=8.0.0" } }, - "node_modules/web3/node_modules/web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", + "node_modules/web3-utils": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.5.tgz", + "integrity": "sha512-9AqNOziQky4wNQadEwEfHiBdOZqopIHzQQVzmvvv6fJwDSMhP+khqmAZC7YTiGjs0MboyZ8tWNivqSO1699XQw==", "dependencies": { - "bn.js": "^4.11.9", + "bn.js": "^5.2.1", "ethereum-bloom-filters": "^1.0.6", "ethereumjs-util": "^7.1.0", "ethjs-unit": "0.1.6", @@ -20234,7 +25124,12 @@ "node_modules/websocket/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" }, "node_modules/whatwg-url": { "version": "5.0.0", @@ -20288,16 +25183,16 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "node_modules/which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" + "is-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -20306,18 +25201,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/winston": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", @@ -20451,15 +25334,6 @@ "ultron": "~1.1.0" } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/xhr": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", @@ -20496,7 +25370,7 @@ "node_modules/xhr2-cookies": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", "dependencies": { "cookiejar": "^2.1.1" } @@ -20547,7 +25421,7 @@ "node_modules/yaeti": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", "engines": { "node": ">=0.10.32" } @@ -20603,7 +25477,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -20618,7 +25491,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, "engines": { "node": ">=10" }, @@ -20630,7 +25502,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -20706,7 +25577,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -20725,16 +25595,14 @@ } }, "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==" }, "@babel/core": { "version": "7.15.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", - "dev": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -20757,7 +25625,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -20766,7 +25633,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -20774,8 +25640,7 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -20802,7 +25667,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", - "dev": true, "requires": { "@babel/types": "^7.15.4", "jsesc": "^2.5.1", @@ -20810,22 +25674,40 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "dependencies": { "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -20833,7 +25715,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.15.4", "@babel/template": "^7.15.4", @@ -20844,7 +25725,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -20853,7 +25733,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -20862,25 +25741,22 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, "requires": { "@babel/types": "^7.15.4" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", @@ -20896,16 +25772,19 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, "requires": { "@babel/types": "^7.15.4" } }, + "@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==" + }, "@babel/helper-replace-supers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", @@ -20917,7 +25796,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -20926,27 +25804,29 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, "requires": { "@babel/types": "^7.15.4" } }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + }, "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" }, "@babel/helpers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dev": true, "requires": { "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", @@ -20983,15 +25863,32 @@ "@babel/parser": { "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", - "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "dev": true + "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==" + }, + "@babel/plugin-transform-runtime": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } }, "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "dev": true, - "peer": true, + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -21011,7 +25908,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.15.4", @@ -21022,7 +25918,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -21033,7 +25928,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -21050,7 +25944,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -21058,18 +25951,17 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" } } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -23332,221 +28224,340 @@ } }, "@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", "requires": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.5" } }, "@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", "requires": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" } }, "@ethersproject/abi": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", - "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.4.tgz", + "integrity": "sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg==", "requires": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/hash": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" } }, "@ethersproject/abstract-provider": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz", - "integrity": "sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", + "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", "requires": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0" + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1" } }, "@ethersproject/abstract-signer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz", - "integrity": "sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", + "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", "requires": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0" + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" } }, "@ethersproject/address": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", - "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", "requires": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/rlp": "^5.4.0" + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" } }, "@ethersproject/base64": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", - "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", + "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", "requires": { - "@ethersproject/bytes": "^5.4.0" + "@ethersproject/bytes": "^5.6.1" + } + }, + "@ethersproject/basex": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz", + "integrity": "sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/properties": "^5.6.0" } }, "@ethersproject/bignumber": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.2.tgz", - "integrity": "sha512-oIBDhsKy5bs7j36JlaTzFgNPaZjiNDOXsdSgSpXRucUl+UA6L/1YLlFeI3cPAoodcenzF4nxNPV13pcy7XbWjA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", + "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "bn.js": "^4.11.9" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^5.2.1" } }, "@ethersproject/bytes": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", - "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", + "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", "requires": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.6.0" } }, "@ethersproject/constants": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", - "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", + "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", "requires": { - "@ethersproject/bignumber": "^5.4.0" + "@ethersproject/bignumber": "^5.6.2" } }, "@ethersproject/hash": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", - "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", - "requires": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", + "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/hdnode": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz", + "integrity": "sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "@ethersproject/json-wallets": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz", + "integrity": "sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + }, + "dependencies": { + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + } } }, "@ethersproject/keccak256": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", - "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", + "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", "requires": { - "@ethersproject/bytes": "^5.4.0", - "js-sha3": "0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - } + "@ethersproject/bytes": "^5.6.1", + "js-sha3": "0.8.0" } }, "@ethersproject/logger": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.1.tgz", - "integrity": "sha512-DZ+bRinnYLPw1yAC64oRl0QyVZj43QeHIhVKfD/+YwSz4wsv1pfwb5SOFjz+r710YEWzU6LrhuSjpSO+6PeE4A==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", + "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==" }, "@ethersproject/networks": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.2.tgz", - "integrity": "sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.4.tgz", + "integrity": "sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==", "requires": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz", + "integrity": "sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/sha2": "^5.6.1" } }, "@ethersproject/properties": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.1.tgz", - "integrity": "sha512-cyCGlF8wWlIZyizsj2PpbJ9I7rIlUAfnHYwy/T90pdkSn/NFTa5YWZx2wTJBe9V7dD65dcrrEMisCRUJiq6n3w==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", + "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", "requires": { - "@ethersproject/logger": "^5.4.0" + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/random": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz", + "integrity": "sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" } }, "@ethersproject/rlp": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", - "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", + "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" } }, - "@ethersproject/signing-key": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", - "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", + "@ethersproject/sha2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz", + "integrity": "sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==", + "dev": true, "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "bn.js": "^4.11.9", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", + "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "bn.js": "^5.2.1", "elliptic": "6.5.4", "hash.js": "1.1.7" } }, "@ethersproject/strings": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", - "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", + "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", "requires": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" } }, "@ethersproject/transactions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", - "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", - "requires": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0" + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", + "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", + "requires": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2" + } + }, + "@ethersproject/wallet": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz", + "integrity": "sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/json-wallets": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" } }, "@ethersproject/web": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", - "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", + "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", "requires": { - "@ethersproject/base64": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" + "@ethersproject/base64": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/wordlists": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz", + "integrity": "sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" } }, "@humanwhocodes/config-array": { @@ -23666,6 +28677,409 @@ "xml2js": "^0.4.23" } }, + "@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==" + }, + "@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==" + }, + "@openzeppelin/contracts": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", + "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==" + }, + "@polkadot/api": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-9.2.1.tgz", + "integrity": "sha512-5cg47N2BX6PbABYrfJIgA78glqLutN1M88y67UWulj17rM6cYmmi26tlb209zOhNZ7cjBhQDPHN/pbdUiL4zgg==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/api-augment": "9.2.1", + "@polkadot/api-base": "9.2.1", + "@polkadot/api-derive": "9.2.1", + "@polkadot/keyring": "^10.1.4", + "@polkadot/rpc-augment": "9.2.1", + "@polkadot/rpc-core": "9.2.1", + "@polkadot/rpc-provider": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/types-augment": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/types-create": "9.2.1", + "@polkadot/types-known": "9.2.1", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", + "eventemitter3": "^4.0.7", + "rxjs": "^7.5.6" + } + }, + "@polkadot/api-augment": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-9.2.1.tgz", + "integrity": "sha512-QetNP5gBtj6DfyJ//5cDNeaEKnd3lsyas9GDw1MqQCxxT0k+6UpLR5JTzeTnTKYSUz7IMIasU/tpunf/2rUuSQ==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/api-base": "9.2.1", + "@polkadot/rpc-augment": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/types-augment": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4" + } + }, + "@polkadot/api-base": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-9.2.1.tgz", + "integrity": "sha512-slc/NzeON1ZZ97/HaWOJF6j7rWn5yHb+q1BCNpWGZ1MLuKW3R4F8Af0AAIBgvCS223NQ4sHaLUoMAcaPdRcbHg==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/rpc-core": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/util": "^10.1.4", + "rxjs": "^7.5.6" + } + }, + "@polkadot/api-derive": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-9.2.1.tgz", + "integrity": "sha512-Vdr6eNaybf22whoHu5fsQe0SsjFFZkvV9GZVczf4gf+lxmZ0GSj634QdBqV/j4l/mvgWgiUqT3b9daTRm5oxiA==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/api": "9.2.1", + "@polkadot/api-augment": "9.2.1", + "@polkadot/api-base": "9.2.1", + "@polkadot/rpc-core": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", + "rxjs": "^7.5.6" + } + }, + "@polkadot/keyring": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-10.1.4.tgz", + "integrity": "sha512-dCMejp5heZwKSFeO+1vCHFoo1h1KgNvu4AaKQdNxpyr/3eCINrCFI74/qT9XGypblxd61caOpJcMl8B1R/UWFA==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/util": "10.1.4", + "@polkadot/util-crypto": "10.1.4" + } + }, + "@polkadot/networks": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-10.1.4.tgz", + "integrity": "sha512-5wMwqD+DeVMh29OZZBVkA4DQE9EBsUj5FjmUS2CloA8RzE6SV0qL34zhTwOdq95KJV1OoDbp9aGjCBqhEuozKw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/util": "10.1.4", + "@substrate/ss58-registry": "^1.25.0" + } + }, + "@polkadot/rpc-augment": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-9.2.1.tgz", + "integrity": "sha512-ABOLmQPergZJVZB/8YOr0SO/EjZtV4ZzhhgBr/nkX0hLULnjOCAxfFOXqXr7cpa4wjCnIBGkOG3fwVZL2v14FA==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/rpc-core": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4" + } + }, + "@polkadot/rpc-core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-9.2.1.tgz", + "integrity": "sha512-4Ns3dbxVESEgjlf1CgpdTTWtRvTdizpJ6NfelbRc8iX7Kg6RMbNeKtPmyRGTzwwMPAoDvNTGSpWmVcN9NscmTQ==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/rpc-augment": "9.2.1", + "@polkadot/rpc-provider": "9.2.1", + "@polkadot/types": "9.2.1", + "@polkadot/util": "^10.1.4", + "rxjs": "^7.5.6" + } + }, + "@polkadot/rpc-provider": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-9.2.1.tgz", + "integrity": "sha512-tz8dng70BLJfnORwakw412p3d0OQzaeCLybNo8lxiORoZy37xDTNYOrWXGejgc0sePNdWi8ZTLYy3pk2BGU3Vg==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/keyring": "^10.1.4", + "@polkadot/types": "9.2.1", + "@polkadot/types-support": "9.2.1", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", + "@polkadot/x-fetch": "^10.1.4", + "@polkadot/x-global": "^10.1.4", + "@polkadot/x-ws": "^10.1.4", + "@substrate/connect": "0.7.10", + "eventemitter3": "^4.0.7", + "mock-socket": "^9.1.5", + "nock": "^13.2.9" + } + }, + "@polkadot/types": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-9.2.1.tgz", + "integrity": "sha512-Z07fIxLVLQXX1386NVI6ov+5jWo4bUX8m+89tnewuqxvVRUhZI8+s350srFZY0B2FjiA73QsE+/EwGFOHtoZfw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/keyring": "^10.1.4", + "@polkadot/types-augment": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/types-create": "9.2.1", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4", + "rxjs": "^7.5.6" + } + }, + "@polkadot/types-augment": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-9.2.1.tgz", + "integrity": "sha512-NfQxDreOSkD23b8WhZDJDDxYjr7a1S3HUMr8FIg+z6tvPfqTtr4+l78kUFWdSflK+nId+m4h38PuJS9JKEG6uw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/types": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4" + } + }, + "@polkadot/types-codec": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-9.2.1.tgz", + "integrity": "sha512-ChzDKu7Ih1UvDoRyR10Fzu6dnUQcHtoB1XzMNd1oHOv46XUNKpen1JD5uRggoCSYJ38ocAjWnmSgj/VJ+pI8YQ==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/util": "^10.1.4", + "@polkadot/x-bigint": "^10.1.4" + } + }, + "@polkadot/types-create": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-9.2.1.tgz", + "integrity": "sha512-ymAiWKjyGJzgLoOamR6EYrFxLhIMTOF2WWUWKO3/mE3puYqsDEtH5rcU78R/lWEVDxGXSaNqYmjhuEyujpWAUw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/types-codec": "9.2.1", + "@polkadot/util": "^10.1.4" + } + }, + "@polkadot/types-known": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-9.2.1.tgz", + "integrity": "sha512-q0WOsV3R8kxdsMrlmUYvE+XQ8AwxNCe/PaAufA9ArPtlvumc1K6gbQ16Ik2mHKtuZBHO2EQcwdXl9Yr+pijRzw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/networks": "^10.1.4", + "@polkadot/types": "9.2.1", + "@polkadot/types-codec": "9.2.1", + "@polkadot/types-create": "9.2.1", + "@polkadot/util": "^10.1.4" + } + }, + "@polkadot/types-support": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-9.2.1.tgz", + "integrity": "sha512-tphkezOtwSW8wnUCr6Pu/sx+IgtzD4c1YC70ans431ZozbxRaT/pcjir4N3Zg6PQJR+zNwHURKHyeOGpuDCg0g==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/util": "^10.1.4" + } + }, + "@polkadot/util": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-10.1.4.tgz", + "integrity": "sha512-MHz1UxYXuV+XxPl+GR++yOUE0OCiVd+eJBqLgpjpVJNRkudbAmfGAbB2TNR0+76M0fevIeHj4DGEd0gY6vqKLw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-bigint": "10.1.4", + "@polkadot/x-global": "10.1.4", + "@polkadot/x-textdecoder": "10.1.4", + "@polkadot/x-textencoder": "10.1.4", + "@types/bn.js": "^5.1.0", + "bn.js": "^5.2.1" + } + }, + "@polkadot/util-crypto": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-10.1.4.tgz", + "integrity": "sha512-6rdUwCdbwmQ0PBWBNYh55RsXAcFjhco/TGLuM7GJ7YufrN9qqv1sr40HlneLbtpiZnfukZ3q/qOpj0h7Hrw2JQ==", + "requires": { + "@babel/runtime": "^7.18.9", + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@polkadot/networks": "10.1.4", + "@polkadot/util": "10.1.4", + "@polkadot/wasm-crypto": "^6.3.1", + "@polkadot/x-bigint": "10.1.4", + "@polkadot/x-randomvalues": "10.1.4", + "@scure/base": "1.1.1", + "ed2curve": "^0.3.0", + "tweetnacl": "^1.0.3" + }, + "dependencies": { + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + } + } + }, + "@polkadot/wasm-bridge": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-6.3.1.tgz", + "integrity": "sha512-1TYkHsb9AEFhU9uZj3biEnN2yKQNzdrwSjiTvfCYnt97pnEkKsZI6cku+YPZQv5w/x9CQa5Yua9e2DVVZSivGA==", + "requires": { + "@babel/runtime": "^7.18.9" + } + }, + "@polkadot/wasm-crypto": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-6.3.1.tgz", + "integrity": "sha512-OO8h0qeVkqp4xYZaRVl4iuWOEtq282pNBHDKb6SOJuI2g59eWGcKh4EQU9Me2VP6qzojIqptrkrVt7KQXC68gA==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/wasm-bridge": "6.3.1", + "@polkadot/wasm-crypto-asmjs": "6.3.1", + "@polkadot/wasm-crypto-init": "6.3.1", + "@polkadot/wasm-crypto-wasm": "6.3.1", + "@polkadot/wasm-util": "6.3.1" + } + }, + "@polkadot/wasm-crypto-asmjs": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.3.1.tgz", + "integrity": "sha512-zbombRfA5v/mUWQQhgg2YwaxhRmxRIrvskw65x+lruax3b6xPBFDs7yplopiJU3r8h2pTgQvX/DUksvqz2TCRQ==", + "requires": { + "@babel/runtime": "^7.18.9" + } + }, + "@polkadot/wasm-crypto-init": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.3.1.tgz", + "integrity": "sha512-9yaUBcu+snwjJLmPPGl3cyGRQ1afyFGm16qzTM0sgG/ZCfUlK4uk8KWZe+sBUKgoxb2oXY7Y4WklKgQI1YBdfw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/wasm-bridge": "6.3.1", + "@polkadot/wasm-crypto-asmjs": "6.3.1", + "@polkadot/wasm-crypto-wasm": "6.3.1" + } + }, + "@polkadot/wasm-crypto-wasm": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.3.1.tgz", + "integrity": "sha512-idSlzKGVzCfeCMRHsacRvqwojSaTadFxL/Dbls4z1thvfa3U9Ku0d2qVtlwg7Hj+tYWDiuP8Kygs+6bQwfs0XA==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/wasm-util": "6.3.1" + } + }, + "@polkadot/wasm-util": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-6.3.1.tgz", + "integrity": "sha512-12oAv5J7Yoc9m6jixrSaQCxpOkWOyzHx3DMC8qmLjRiwdBWxqLmImOVRVnFsbaxqSbhBIHRuJphVxWE+GZETDg==", + "requires": { + "@babel/runtime": "^7.18.9" + } + }, + "@polkadot/x-bigint": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-10.1.4.tgz", + "integrity": "sha512-qgLetTukFhkxNxNcUWMmnrfE9bp4TNbrqNoVBVH7wqSuEVpDPITBXsQ/78LbaaZGWD80Ew0wGxcZ/rqX+dLVUA==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4" + } + }, + "@polkadot/x-fetch": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-10.1.4.tgz", + "integrity": "sha512-hVhLpOvx+ys6klkqWJnINi9FU/JcDnc+6cyU9fa+Dum3mqO1XnngOYDO9mpf5HODIwrFNFmohll9diRP+TW0yQ==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4", + "@types/node-fetch": "^2.6.2", + "node-fetch": "^3.2.10" + }, + "dependencies": { + "data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "node-fetch": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } + } + }, + "@polkadot/x-global": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-10.1.4.tgz", + "integrity": "sha512-67f53H872wHvmjmL96DvhC3dG7gKRG1ghEbHXeFIGwkix+9zGEMV9krYW1+OAvGAuCQZqUIUGiJ7lad4Zjb7wQ==", + "requires": { + "@babel/runtime": "^7.18.9" + } + }, + "@polkadot/x-randomvalues": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-10.1.4.tgz", + "integrity": "sha512-sfYz3GmyG739anj07Y+8PUX+95upO1zlsADAEfK1w1mMpTw97xEoMZf66CduAQOe43gEwQXc/JuKq794C/Hr7Q==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4" + } + }, + "@polkadot/x-textdecoder": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-10.1.4.tgz", + "integrity": "sha512-B8XcAmJLnuppSr4RUNPevh5MH3tWZBwBR0wUsSdIyiGXuncgnkj9jmpbGLgV1tSn+BGxX3SNsRho3/4CNmndWQ==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4" + } + }, + "@polkadot/x-textencoder": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-10.1.4.tgz", + "integrity": "sha512-vDpo0rVV4jBmr0L2tCZPZzxmzV2vZhpH1Dw9H7MpmZSPePz4ZF+o4RBJz/ocwQh3+1qV1SKQm7+fj4lPwUZdEw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4" + } + }, + "@polkadot/x-ws": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-10.1.4.tgz", + "integrity": "sha512-hi7hBRRCLlHgqVW2p5TkoJuTxV7sVprl+aAnmcIpPU4J8Ai6PKQvXR+fLK01T8moBYmH5ztHrBWvY/XRzmQ8Vg==", + "requires": { + "@babel/runtime": "^7.18.9", + "@polkadot/x-global": "10.1.4", + "@types/websocket": "^1.0.5", + "websocket": "^1.0.34" + } + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -23728,10 +29142,107 @@ "@types/node": "*" } }, + "@redux-saga/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.0.tgz", + "integrity": "sha512-9n8PeOJT2gyVutH5LUKbCiPFkUZLOM4LWtt5zhbXJa77gzXj9LuEqDj1CVOsfPM0NcHVEhVUQ/Cr++ZZfCNjFg==", + "requires": { + "@babel/runtime": "^7.6.3", + "@redux-saga/deferred": "^1.2.0", + "@redux-saga/delay-p": "^1.2.0", + "@redux-saga/is": "^1.1.2", + "@redux-saga/symbols": "^1.1.2", + "@redux-saga/types": "^1.2.0", + "redux": "^4.0.4", + "typescript-tuple": "^2.2.1" + }, + "dependencies": { + "redux": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz", + "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==", + "requires": { + "@babel/runtime": "^7.9.2" + } + } + } + }, + "@redux-saga/deferred": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.2.0.tgz", + "integrity": "sha512-PJrcqMPN/WdmNyJvI1xwPnktaqEd2F3Lc79bRpjupX5zDO+RgLTekuoWv+cgyfGBVW2iaMTEYhUVlZqvCkGAIg==" + }, + "@redux-saga/delay-p": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.2.0.tgz", + "integrity": "sha512-neR2QbTZbwNkQ3/LVdltEdfLVyoxmP7OcUys68KgieCuaWBDpfDeXqxkTRz/biCjYqJGezRDgSfTu6wx/44Lfg==", + "requires": { + "@redux-saga/symbols": "^1.1.2" + } + }, + "@redux-saga/is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@redux-saga/is/-/is-1.1.2.tgz", + "integrity": "sha512-OLbunKVsCVNTKEf2cH4TYyNbbPgvmZ52iaxBD4I1fTif4+MTXMa4/Z07L83zW/hTCXwpSZvXogqMqLfex2Tg6w==", + "requires": { + "@redux-saga/symbols": "^1.1.2", + "@redux-saga/types": "^1.1.0" + } + }, + "@redux-saga/symbols": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.1.2.tgz", + "integrity": "sha512-EfdGnF423glv3uMwLsGAtE6bg+R9MdqlHEzExnfagXPrIiuxwr3bdiAwz3gi+PsrQ3yBlaBpfGLtDG8rf3LgQQ==" + }, + "@redux-saga/types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.2.0.tgz", + "integrity": "sha512-SCZVqXX4l3WwVM58eXFtXabJdxGQKY7hvSToV+xivtPwmutCbhOhgJ53JwKGX3HCBwEkzn4t9WItBQKbzNNxyw==" + }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + }, "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@sinonjs/samsam": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", + "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true }, "@stablelib/aead": { "version": "1.0.1", @@ -23859,22 +29370,884 @@ "@stablelib/wipe": "^1.0.1" } }, + "@substrate/connect": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.7.10.tgz", + "integrity": "sha512-WNdW18e0I696/AQjrAXdMD9W8YaKLTcPr2Cu8scSwiUT40in84KEzi+g+P367cE2etAc+Dvu8vNDEQTbUPNqEg==", + "requires": { + "@substrate/connect-extension-protocol": "^1.0.1", + "@substrate/smoldot-light": "0.6.27", + "eventemitter3": "^4.0.7" + } + }, + "@substrate/connect-extension-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.1.tgz", + "integrity": "sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg==" + }, + "@substrate/smoldot-light": { + "version": "0.6.27", + "resolved": "https://registry.npmjs.org/@substrate/smoldot-light/-/smoldot-light-0.6.27.tgz", + "integrity": "sha512-Wy3fbyfZqR3HLynuxeBkUunZsrbqpsmFN+D0/8cVIHZbO7WDwJsmCUc32yO5r+v6s/T97L7FOJHEyMWmRfnKAQ==", + "requires": { + "pako": "^2.0.4", + "websocket": "^1.0.32" + }, + "dependencies": { + "pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + } + } + }, + "@substrate/ss58-registry": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.25.0.tgz", + "integrity": "sha512-LmCH4QJRdHaeLsLTPSgJaXguMoIW+Ig9fA9LRPpeya9HefVAJ7gZuUYinldv+QmX7evNm5CL0rspNUS8l1DvXg==" + }, "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "requires": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^2.0.1" + } + }, + "@truffle/abi-utils": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.2.16.tgz", + "integrity": "sha512-FCDANbJM5UJ0Mm61Z9MmQ3DVnMCCmMgOSFvGDORyYqHiXdS6uK0n77pN5tuUUCles8YIpgnCdijMWs8HoaRSMw==", + "requires": { + "change-case": "3.0.2", + "faker": "5.5.3", + "fast-check": "3.1.1" + } + }, + "@truffle/code-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-2.0.0.tgz", + "integrity": "sha512-qvx3MiBbnCgiNeKFnhQ7wpOQMkXz9ca5E72WZAFIxRg+0wYAR+u7e+DXQe88xTjthC2OP3xDNSeYcb57NIU8Pw==", + "requires": { + "cbor": "^5.2.0" + } + }, + "@truffle/codec": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.14.1.tgz", + "integrity": "sha512-ULvtciwbdUANe7VNsPCAIWSrxm0CFu145VVVxJ+yE1xHY9TiLKHOf+CBH2sMW3mVkbt5HwVUF5DGm+uXngK19A==", + "requires": { + "@truffle/abi-utils": "^0.2.16", + "@truffle/compile-common": "^0.7.33", + "big.js": "^6.0.3", + "bn.js": "^5.1.3", + "cbor": "^5.2.0", + "debug": "^4.3.1", + "lodash": "^4.17.21", + "semver": "7.3.7", + "utf8": "^3.0.0", + "web3-utils": "1.7.4" + }, + "dependencies": { + "big.js": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", + "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==" + }, + "web3-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", + "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", + "requires": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "@truffle/compile-common": { + "version": "0.7.33", + "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.7.33.tgz", + "integrity": "sha512-LvZhDheDGqb+TScSRSYAFZQBRFEn+2ic/gtJIJXB2Rm1U6cS5GLdvWrEdPPIAwP+xt0xZ4ySI4mw2wBL8MUSRg==", + "requires": { + "@truffle/error": "^0.1.0", + "colors": "1.4.0" + } + }, + "@truffle/db-loader": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.1.28.tgz", + "integrity": "sha512-d12zo7iPFCL7tpC0FD8eEianbyBkptN3rj1ySrcneKnDiQCfZlB13rIMyzMWUeYsSmOhL5BaR9CbztVAhLnnOA==", + "requires": { + "@truffle/db": "^1.0.18" + } + }, + "@truffle/debugger": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@truffle/debugger/-/debugger-11.0.4.tgz", + "integrity": "sha512-5xmmApISc8Bm84kLS9BlIB5cA4pQuVze+l5f7UptsvT2bdEdaxIdPBUrTcUcVYkqZzpZVGcFMdIF0Je+Ju3eCw==", + "requires": { + "@truffle/abi-utils": "^0.2.16", + "@truffle/codec": "^0.14.1", + "@truffle/source-map-utils": "^1.3.91", + "bn.js": "^5.1.3", + "debug": "^4.3.1", + "json-pointer": "^0.6.1", + "json-stable-stringify": "^1.0.1", + "lodash": "^4.17.21", + "redux": "^3.7.2", + "redux-saga": "1.0.0", + "reselect-tree": "^1.3.7", + "semver": "7.3.7", + "web3": "1.7.4", + "web3-eth-abi": "1.7.4" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "web3": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.4.tgz", + "integrity": "sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A==", + "requires": { + "web3-bzz": "1.7.4", + "web3-core": "1.7.4", + "web3-eth": "1.7.4", + "web3-eth-personal": "1.7.4", + "web3-net": "1.7.4", + "web3-shh": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-bzz": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.4.tgz", + "integrity": "sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q==", + "requires": { + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40" + } + }, + "web3-core": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.4.tgz", + "integrity": "sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q==", + "requires": { + "@types/bn.js": "^5.1.0", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-core-requestmanager": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-core-helpers": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz", + "integrity": "sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg==", + "requires": { + "web3-eth-iban": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-core-method": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.4.tgz", + "integrity": "sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ==", + "requires": { + "@ethersproject/transactions": "^5.6.2", + "web3-core-helpers": "1.7.4", + "web3-core-promievent": "1.7.4", + "web3-core-subscriptions": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-core-promievent": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz", + "integrity": "sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA==", + "requires": { + "eventemitter3": "4.0.4" + } + }, + "web3-core-requestmanager": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz", + "integrity": "sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA==", + "requires": { + "util": "^0.12.0", + "web3-core-helpers": "1.7.4", + "web3-providers-http": "1.7.4", + "web3-providers-ipc": "1.7.4", + "web3-providers-ws": "1.7.4" + } + }, + "web3-core-subscriptions": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz", + "integrity": "sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g==", + "requires": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.7.4" + } + }, + "web3-eth": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.4.tgz", + "integrity": "sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug==", + "requires": { + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-core-subscriptions": "1.7.4", + "web3-eth-abi": "1.7.4", + "web3-eth-accounts": "1.7.4", + "web3-eth-contract": "1.7.4", + "web3-eth-ens": "1.7.4", + "web3-eth-iban": "1.7.4", + "web3-eth-personal": "1.7.4", + "web3-net": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-eth-abi": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz", + "integrity": "sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg==", + "requires": { + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.7.4" + } + }, + "web3-eth-accounts": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz", + "integrity": "sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw==", + "requires": { + "@ethereumjs/common": "^2.5.0", + "@ethereumjs/tx": "^3.3.2", + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-util": "^7.0.10", + "scrypt-js": "^3.0.1", + "uuid": "3.3.2", + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-eth-contract": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz", + "integrity": "sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ==", + "requires": { + "@types/bn.js": "^5.1.0", + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-core-promievent": "1.7.4", + "web3-core-subscriptions": "1.7.4", + "web3-eth-abi": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-eth-ens": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz", + "integrity": "sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA==", + "requires": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-promievent": "1.7.4", + "web3-eth-abi": "1.7.4", + "web3-eth-contract": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-eth-iban": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz", + "integrity": "sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w==", + "requires": { + "bn.js": "^5.2.1", + "web3-utils": "1.7.4" + } + }, + "web3-eth-personal": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz", + "integrity": "sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g==", + "requires": { + "@types/node": "^12.12.6", + "web3-core": "1.7.4", + "web3-core-helpers": "1.7.4", + "web3-core-method": "1.7.4", + "web3-net": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-net": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.4.tgz", + "integrity": "sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg==", + "requires": { + "web3-core": "1.7.4", + "web3-core-method": "1.7.4", + "web3-utils": "1.7.4" + } + }, + "web3-providers-http": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.4.tgz", + "integrity": "sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA==", + "requires": { + "web3-core-helpers": "1.7.4", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz", + "integrity": "sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw==", + "requires": { + "oboe": "2.1.5", + "web3-core-helpers": "1.7.4" + } + }, + "web3-providers-ws": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz", + "integrity": "sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ==", + "requires": { + "eventemitter3": "4.0.4", + "web3-core-helpers": "1.7.4", + "websocket": "^1.0.32" + } + }, + "web3-shh": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.4.tgz", + "integrity": "sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A==", + "requires": { + "web3-core": "1.7.4", + "web3-core-method": "1.7.4", + "web3-core-subscriptions": "1.7.4", + "web3-net": "1.7.4" + } + }, + "web3-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", + "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", + "requires": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "@truffle/error": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.1.0.tgz", + "integrity": "sha512-RbUfp5VreNhsa2Q4YbBjz18rOQI909pG32bghl1hulO7IpvcqTS+C3Ge5cNbiWQ1WGzy1wIeKLW0tmQtHFB7qg==" + }, + "@truffle/hdwallet-provider": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-1.7.0.tgz", + "integrity": "sha512-nT7BPJJ2jPCLJc5uZdVtRnRMny5he5d3kO9Hi80ZSqe5xlnK905grBptM/+CwOfbeqHKQirI1btwm6r3wIBM8A==", + "requires": { + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "@trufflesuite/web3-provider-engine": "15.0.14", + "eth-sig-util": "^3.0.1", + "ethereum-cryptography": "^0.1.3", + "ethereum-protocol": "^1.0.1", + "ethereumjs-util": "^6.1.0", + "ethereumjs-wallet": "^1.0.1" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "@truffle/source-map-utils": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@truffle/source-map-utils/-/source-map-utils-1.3.91.tgz", + "integrity": "sha512-TvY7fbix3txDtp58abaGWGHZuKiwajkgFXlOqYBHRJ9fsFdI30fCOMetiDHxcRMKajP2zF0df5cMnAxH5rQsOg==", + "requires": { + "@truffle/code-utils": "^2.0.0", + "@truffle/codec": "^0.14.1", + "debug": "^4.3.1", + "json-pointer": "^0.6.1", + "node-interval-tree": "^1.3.3", + "web3-utils": "1.7.4" + }, + "dependencies": { + "web3-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", + "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", + "requires": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + } + } + }, + "@trufflesuite/eth-json-rpc-filters": { + "version": "4.1.2-1", + "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-filters/-/eth-json-rpc-filters-4.1.2-1.tgz", + "integrity": "sha512-/MChvC5dw2ck9NU1cZmdovCz2VKbOeIyR4tcxDvA5sT+NaL0rA2/R5U0yI7zsbo1zD+pgqav77rQHTzpUdDNJQ==", + "requires": { + "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-0", + "await-semaphore": "^0.1.3", + "eth-query": "^2.1.2", + "json-rpc-engine": "^5.1.3", + "lodash.flatmap": "^4.5.0", + "safe-event-emitter": "^1.0.1" + } + }, + "@trufflesuite/eth-json-rpc-infura": { + "version": "4.0.3-0", + "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-infura/-/eth-json-rpc-infura-4.0.3-0.tgz", + "integrity": "sha512-xaUanOmo0YLqRsL0SfXpFienhdw5bpQ1WEXxMTRi57az4lwpZBv4tFUDvcerdwJrxX9wQqNmgUgd1BrR01dumw==", + "requires": { + "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-1", + "cross-fetch": "^2.1.1", + "eth-json-rpc-errors": "^1.0.1", + "json-rpc-engine": "^5.1.3" + }, + "dependencies": { + "cross-fetch": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", + "requires": { + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" + } + }, + "eth-json-rpc-errors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz", + "integrity": "sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + } + } + }, + "@trufflesuite/eth-json-rpc-middleware": { + "version": "4.4.2-1", + "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.2-1.tgz", + "integrity": "sha512-iEy9H8ja7/8aYES5HfrepGBKU9n/Y4OabBJEklVd/zIBlhCCBAWBqkIZgXt11nBXO/rYAeKwYuE3puH3ByYnLA==", + "requires": { + "@trufflesuite/eth-sig-util": "^1.4.2", + "btoa": "^1.2.1", + "clone": "^2.1.1", + "eth-json-rpc-errors": "^1.0.1", + "eth-query": "^2.1.2", + "ethereumjs-block": "^1.6.0", + "ethereumjs-tx": "^1.3.7", + "ethereumjs-util": "^5.1.2", + "ethereumjs-vm": "^2.6.0", + "fetch-ponyfill": "^4.0.0", + "json-rpc-engine": "^5.1.3", + "json-stable-stringify": "^1.0.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "eth-json-rpc-errors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz", + "integrity": "sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "@trufflesuite/eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@trufflesuite/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha512-+GyfN6b0LNW77hbQlH3ufZ/1eCON7mMrGym6tdYf7xiNw9Vv3jBO72bmmos1EId2NgBvPMhmYYm6DSLQFTmzrA==", + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^5.1.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "@trufflesuite/web3-provider-engine": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.14.tgz", + "integrity": "sha512-6/LoWvNMxYf0oaYzJldK2a9AdnkAdIeJhHW4nuUBAeO29eK9xezEaEYQ0ph1QRTaICxGxvn+1Azp4u8bQ8NEZw==", + "requires": { + "@ethereumjs/tx": "^3.3.0", + "@trufflesuite/eth-json-rpc-filters": "^4.1.2-1", + "@trufflesuite/eth-json-rpc-infura": "^4.0.3-0", + "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-1", + "@trufflesuite/eth-sig-util": "^1.4.2", + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^4.4.2", + "eth-json-rpc-errors": "^2.0.2", + "ethereumjs-block": "^1.2.2", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "cross-fetch": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.6.tgz", + "integrity": "sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==", + "requires": { + "node-fetch": "^2.6.7", + "whatwg-fetch": "^2.0.4" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "requires": { + "async-limiter": "~1.0.0" + } + } } }, "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", "requires": { "@types/node": "*" } }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, "@types/concat-stream": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", @@ -23893,6 +30266,11 @@ "@types/node": "*" } }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, "@types/http-link-header": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.3.tgz", @@ -23901,6 +30279,11 @@ "@types/node": "*" } }, + "@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" + }, "@types/json-stable-stringify": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz", @@ -23913,6 +30296,14 @@ "dev": true, "peer": true }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "requires": { + "@types/node": "*" + } + }, "@types/long": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", @@ -23947,6 +30338,27 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" }, + "@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "@types/pbkdf2": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", @@ -23970,6 +30382,14 @@ "safe-buffer": "*" } }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" + } + }, "@types/retry": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", @@ -24011,6 +30431,14 @@ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==" }, + "@types/websocket": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", + "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", + "requires": { + "@types/node": "*" + } + }, "@types/xml": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/xml/-/xml-1.0.8.tgz", @@ -24035,8 +30463,7 @@ "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" }, "@vascosantos/moving-average": { "version": "1.1.0", @@ -24264,13 +30691,26 @@ } }, "abortable-iterator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-3.0.0.tgz", - "integrity": "sha512-7KqcPPnMhfot4GrEjK51zesS4Ye/lUCHBgYt3oRxIlU24HO3mVxBwEo9niNyfHqoWKqWLuZTc3zErNomdHA+ag==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-3.0.2.tgz", + "integrity": "sha512-qVP8HFfTpUQI2F+f1tpTriKDIZ4XrmwCrBCrQeRKO7DKWF3kgoT6NXiNDv2krrGcHxPwmI63eGQiec81sEaWIw==", "requires": { "get-iterator": "^1.0.2" } }, + "abortcontroller-polyfill": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", + "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==" + }, + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "requires": { + "xtend": "~4.0.0" + } + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -24294,8 +30734,7 @@ "aes-js": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", - "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", - "dev": true + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" }, "aggregate-error": { "version": "3.1.0", @@ -24331,15 +30770,6 @@ "dev": true, "requires": {} }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "requires": { - "string-width": "^4.1.0" - } - }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -24393,12 +30823,16 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, + "app-module-path": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz", + "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==" + }, "app-root-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", @@ -24577,6 +31011,13 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } } }, "assert": { @@ -24617,8 +31058,7 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" }, "assertion-error-formatter": { "version": "3.0.0", @@ -24631,6 +31071,79 @@ "repeat-string": "^1.6.1" } }, + "assertion-tools": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/assertion-tools/-/assertion-tools-1.0.8.tgz", + "integrity": "sha512-tv5lYwLkrJAIbaRNBwlD65Qztwad5NafO1VH+DxjnGRt53xk0qkSHX1CQu82dGg7fjkGcRZjc+mnlPH2gjmcIg==", + "requires": { + "jsonld": "^6.0.0", + "keccak256": "^1.0.6", + "merkletreejs": "^0.2.32", + "multiformats": "^9.7.1", + "web3": "^1.7.4" + }, + "dependencies": { + "@digitalbazaar/http-client": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.2.0.tgz", + "integrity": "sha512-NhYXcWE/JDE7AnJikNX7q0S6zNuUPA2NuIoRdUpmvHlarjmRqyr6hIO3Awu2FxlUzbdiI1uzuWrZyB9mD1tTvw==", + "requires": { + "ky": "^0.30.0", + "ky-universal": "^0.10.1", + "undici": "^5.2.0" + } + }, + "data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "jsonld": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-6.0.0.tgz", + "integrity": "sha512-1SkN2RXhMCTCSkX+bzHvr9ycM2HTmjWyV41hn2xG7k6BqlCgRjw0zHmuqfphjBRPqi1gKMIqgBCe/0RZMcWrAA==", + "requires": { + "@digitalbazaar/http-client": "^3.2.0", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.0.0" + } + }, + "ky": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", + "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==" + }, + "ky-universal": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.10.1.tgz", + "integrity": "sha512-r8909k+ELKZAxhVA5c440x22hqw5XcMRwLRbgpPQk4JHy3/ddJnvzcnSo5Ww3HdKdNeS3Y8dBgcIYyVahMa46g==", + "requires": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.2" + } + }, + "node-fetch": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } + } + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -24651,9 +31164,9 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "async-each": { "version": "1.0.3", @@ -24663,11 +31176,37 @@ "optional": true, "peer": true }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "requires": { + "async": "^2.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + } + } + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, + "async-mutex": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz", + "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", + "requires": { + "tslib": "^2.3.1" + } + }, "asynciterator": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.4.0.tgz", @@ -24708,6 +31247,11 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, + "await-semaphore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz", + "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" + }, "awilix": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/awilix/-/awilix-5.0.1.tgz", @@ -24749,6 +31293,48 @@ "dev": true, "peer": true }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", + "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2" + } + }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "requires": { + "precond": "0.2" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -24881,8 +31467,7 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "bindings": { "version": "1.5.0", @@ -24912,15 +31497,10 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "bn": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bn/-/bn-1.0.5.tgz", - "integrity": "sha512-7TvGbqbZb6lDzsBtNz1VkdXXV0BVmZKPPViPmo2IpvwaryF7P+QKYKACyVkwo2mZPr2CpFiz7EtgPEcc3o/JFQ==" - }, "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "body-parser": { "version": "1.19.0", @@ -24967,65 +31547,6 @@ } } }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -25039,7 +31560,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -25057,8 +31577,7 @@ "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "browserify-aes": { "version": "1.2.0", @@ -25101,13 +31620,6 @@ "requires": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - } } }, "browserify-sign": { @@ -25126,11 +31638,6 @@ "safe-buffer": "^5.2.0" }, "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -25149,16 +31656,14 @@ } }, "browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", - "dev": true, + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "requires": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" } }, "bs58": { @@ -25179,6 +31684,11 @@ "safe-buffer": "^5.1.2" } }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -25188,6 +31698,11 @@ "ieee754": "^1.2.1" } }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -25199,10 +31714,15 @@ "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" }, + "buffer-reverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", + "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==" + }, "buffer-to-arraybuffer": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" }, "buffer-xor": { "version": "1.0.3", @@ -25215,11 +31735,11 @@ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" }, "bufferutil": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.4.tgz", - "integrity": "sha512-VNxjXUCrF3LvbLgwfkTb5LsFvk6pGIn7OBb9x+3o+iJ6mKw0JTUp4chBFc88hi1aspeZGeZG9jAIbpFYPQSLZw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", "requires": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" } }, "builtin-status-codes": { @@ -25230,11 +31750,11 @@ "peer": true }, "busboy": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", - "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "requires": { - "dicer": "0.3.0" + "streamsearch": "^1.1.0" } }, "bytes": { @@ -25318,18 +31838,23 @@ "unset-value": "^1.0.0" } }, - "cacheable-request": { + "cacheable-lookup": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==" + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", "requires": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", + "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" }, "dependencies": { "get-stream": { @@ -25388,10 +31913,9 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "caniuse-lite": { - "version": "1.0.30001257", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz", - "integrity": "sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==", - "dev": true + "version": "1.0.30001376", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001376.tgz", + "integrity": "sha512-I27WhtOQ3X3v3it9gNs/oTpoE5KpwmqKR5oKPA8M0G7uMXh9Ty81Q904HpKUrM30ei7zfcL5jE7AXefgbOfMig==" }, "canonicalize": { "version": "1.0.8", @@ -25414,6 +31938,15 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "cbor": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", + "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", + "requires": { + "bignumber.js": "^9.0.1", + "nofilter": "^1.0.4" + } + }, "chai": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", @@ -25491,17 +32024,90 @@ } } }, + "change-case": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz", + "integrity": "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==", + "requires": { + "camel-case": "^3.0.0", + "constant-case": "^2.0.0", + "dot-case": "^2.1.0", + "header-case": "^1.0.0", + "is-lower-case": "^1.1.0", + "is-upper-case": "^1.1.0", + "lower-case": "^1.1.1", + "lower-case-first": "^1.0.0", + "no-case": "^2.3.2", + "param-case": "^2.1.0", + "pascal-case": "^2.0.0", + "path-case": "^2.1.0", + "sentence-case": "^2.1.0", + "snake-case": "^2.1.0", + "swap-case": "^1.1.0", + "title-case": "^2.1.0", + "upper-case": "^1.1.1", + "upper-case-first": "^1.1.0" + }, + "dependencies": { + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "pascal-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", + "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", + "requires": { + "camel-case": "^3.0.0", + "upper-case-first": "^1.1.0" + } + }, + "upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", + "requires": { + "upper-case": "^1.1.1" + } + } + } + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, + "checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==", + "requires": { + "functional-red-black-tree": "^1.0.1" + } + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -25525,12 +32131,6 @@ "dev": true, "peer": true }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "cids": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", @@ -25606,12 +32206,6 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, "cli-color": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.1.tgz", @@ -25725,9 +32319,9 @@ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" }, "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "requires": { "mimic-response": "^1.0.0" } @@ -25774,17 +32368,10 @@ "simple-swizzle": "^0.2.2" } }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "colorspace": { "version": "1.1.4", @@ -25854,6 +32441,15 @@ } } }, + "compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "requires": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -25906,20 +32502,6 @@ "proto-list": "~1.2.1" } }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, "confusing-browser-globals": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", @@ -25933,6 +32515,15 @@ "dev": true, "peer": true }, + "constant-case": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", + "integrity": "sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==", + "requires": { + "snake-case": "^2.1.0", + "upper-case": "^1.1.1" + } + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -25967,7 +32558,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -26028,6 +32618,22 @@ "dev": true, "peer": true }, + "core-js-compat": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", + "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", + "requires": { + "browserslist": "^4.21.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, "core-js-pure": { "version": "3.17.3", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.17.3.tgz", @@ -26050,13 +32656,9 @@ } }, "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" }, "create-ecdh": { "version": "4.0.4", @@ -26065,6 +32667,13 @@ "requires": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } } }, "create-hash": { @@ -26143,12 +32752,6 @@ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", @@ -26195,6 +32798,13 @@ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "requires": { "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "decamelize": { @@ -26208,11 +32818,18 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } } }, "deeks": { @@ -26273,16 +32890,25 @@ } }, "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "requires": { + "abstract-leveldown": "~2.6.0" + } }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { @@ -26324,14 +32950,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", - "requires": { - "streamsearch": "0.1.2" - } - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -26346,6 +32964,327 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dkg-evm-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dkg-evm-module/-/dkg-evm-module-1.0.1.tgz", + "integrity": "sha512-trmiV9LyzHIS4u7F+1c85RZZ16aumYdrScuK0yeHL9GxkymvIxY1eBkwK5F5K0jELkx7nRVicS1ioYl5k9DAMw==", + "requires": { + "@openzeppelin/contracts": "^4.6.0", + "@truffle/hdwallet-provider": "^1.2.1", + "bn.js": "^5.1.3", + "dotenv": "^8.2.0", + "fs": "0.0.1-security", + "ganache": "^7.3.1", + "ganache-cli": "^6.12.2", + "ganache-time-traveler": "^1.0.15", + "hamming-distance": "^1.0.0", + "hex-to-binary": "^1.0.1", + "keccak256": "^1.0.6", + "merkle-tools": "^1.4.1", + "merkletreejs": "^0.2.32", + "minimist": "latest", + "mocha": "^8.2.1", + "multiformats": "^9.6.5", + "truffle": "^5.1.56", + "truffle-assertions": "^0.9.2", + "uint8arrays": "^3.0.0", + "web3": "^1.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" + }, + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "requires": { + "chalk": "^4.0.0" + } + }, + "mocha": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", + "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + } + }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + } } }, "dkg.js": { @@ -26452,13 +33391,27 @@ "domhandler": "^4.2.0" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, + "dot-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", + "integrity": "sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==", "requires": { - "is-obj": "^2.0.0" + "no-case": "^2.2.0" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + } } }, "dotenv": { @@ -26504,9 +33457,9 @@ } }, "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" }, "duplexify": { "version": "4.1.2", @@ -26550,6 +33503,29 @@ "safer-buffer": "^2.1.0" } }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ed2curve": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", + "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", + "requires": { + "tweetnacl": "1.x.x" + }, + "dependencies": { + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + } + } + }, "editorconfig": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", @@ -26596,10 +33572,9 @@ } }, "electron-to-chromium": { - "version": "1.3.840", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.840.tgz", - "integrity": "sha512-yRoUmTLDJnkIJx23xLY7GbSvnmDCq++NSuxHDQ0jiyDJ9YZBUGJcrdUqm+ZwZFzMbCciVzfem2N2AWiHJcWlbw==", - "dev": true + "version": "1.4.219", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.219.tgz", + "integrity": "sha512-zoQJsXOUw0ZA0YxbjkmzBumAJRtr6je5JySuL/bAoFs0DuLiLJ+5FzRF7/ZayihxR2QcewlRZVm5QZdUhwjOgA==" }, "elliptic": { "version": "6.5.4", @@ -26613,6 +33588,13 @@ "inherits": "^2.0.4", "minimalistic-assert": "^1.0.1", "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } } }, "emoji-regex": { @@ -26726,7 +33708,6 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, "requires": { "prr": "~1.0.1" } @@ -26742,28 +33723,33 @@ } }, "es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.1", "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.2", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" } }, "es-to-primitive": { @@ -26802,6 +33788,11 @@ "es6-symbol": "^3.1.1" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, "es6-promisify": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", @@ -26832,12 +33823,6 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -27219,10 +34204,23 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "eth-block-tracker": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", + "integrity": "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==", + "requires": { + "@babel/plugin-transform-runtime": "^7.5.5", + "@babel/runtime": "^7.5.5", + "eth-query": "^2.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, "eth-ens-namehash": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", "requires": { "idna-uts46-hx": "^2.3.1", "js-sha3": "^0.5.7" @@ -27231,18 +34229,90 @@ "js-sha3": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" } } }, + "eth-json-rpc-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz", + "integrity": "sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + }, "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", "requires": { "bn.js": "^4.11.6", "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", "xhr-request-promise": "^0.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", + "requires": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "eth-rpc-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz", + "integrity": "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==", + "requires": { + "fast-safe-stringify": "^2.0.6" + } + }, + "eth-sig-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz", + "integrity": "sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==", + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + } } }, "ethereum-bloom-filters": { @@ -27253,6 +34323,11 @@ "js-sha3": "^0.8.0" } }, + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" + }, "ethereum-cryptography": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", @@ -27275,31 +34350,262 @@ "setimmediate": "^1.0.5" } }, + "ethereum-protocol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz", + "integrity": "sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg==" + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, "ethereumjs-util": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.2.tgz", - "integrity": "sha512-xCV3PTAhW8Q2k88XZn9VcO4OrjpeXAlDm5LQTaOLp81SjNSSY6+MwuGXrx6vafOMheWSmZGxIXUbue5e9UvUBw==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "requires": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", "create-hash": "^1.1.2", "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", "rlp": "^2.2.4" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" }, "dependencies": { "@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "requires": { "@types/node": "*" } }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } } } }, @@ -27307,7 +34613,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz", "integrity": "sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA==", - "dev": true, "requires": { "aes-js": "^3.1.2", "bs58check": "^2.1.2", @@ -27393,11 +34698,6 @@ "strip-final-newline": "^2.0.0" } }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -27491,11 +34791,11 @@ } }, "express-fileupload": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.2.1.tgz", - "integrity": "sha512-fWPNAkBj+Azt9Itmcz/Reqdg3LeBfaXptDEev2JM8bCC0yDptglCnlizhf0YZauyU5X/g6v7v4Xxqhg8tmEfEA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.4.0.tgz", + "integrity": "sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ==", "requires": { - "busboy": "^0.3.1" + "busboy": "^1.6.0" } }, "express-ipfilter": { @@ -27626,6 +34926,27 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, + "fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==", + "requires": { + "checkpoint-store": "^1.1.0" + } + }, + "faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==" + }, + "fast-check": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.1.1.tgz", + "integrity": "sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==", + "requires": { + "pure-rand": "^5.0.1" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -27679,6 +35000,30 @@ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-2.1.2.tgz", "integrity": "sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==" }, + "fetch-ponyfill": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz", + "integrity": "sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g==", + "requires": { + "node-fetch": "~1.7.1" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, "fetch-sparql-endpoint": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/fetch-sparql-endpoint/-/fetch-sparql-endpoint-2.4.0.tgz", @@ -27740,7 +35085,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -27858,8 +35202,7 @@ "flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" }, "flat-cache": { "version": "3.0.4", @@ -27926,6 +35269,14 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -27934,9 +35285,9 @@ "peer": true }, "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", + "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==" }, "foreground-child": { "version": "2.0.0", @@ -27963,6 +35314,30 @@ "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + }, + "dependencies": { + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + } + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -28025,6 +35400,11 @@ "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, "fs-extra": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", @@ -28106,7 +35486,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "optional": true }, "fstream": { @@ -28143,18 +35522,36 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, "ganache": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.0.5.tgz", - "integrity": "sha512-CMRj6dwl1WtE3/4uLHhn/TcZA6QB0SM9YFxSp0ToeGJQ+9HYyfPlzuDE7CzniN+PklEHaCcpgoRYAq9Py9m6WA==", - "dev": true, + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ganache/-/ganache-7.4.0.tgz", + "integrity": "sha512-e1x0ZJsJ5zUP+hWtpSNv+FaavRdcrQhQwe+QZ4kVon5mDm6RgFpe3PzNDJXg82AeqqslohJeK9UinZbZzjewjQ==", "requires": { - "@trufflesuite/bigint-buffer": "1.1.9", + "@trufflesuite/bigint-buffer": "1.1.10", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "5.1.1", + "@types/seedrandom": "3.0.1", "bufferutil": "4.0.5", "emittery": "0.10.0", "keccak": "3.0.1", @@ -28164,87 +35561,561 @@ }, "dependencies": { "@trufflesuite/bigint-buffer": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz", - "integrity": "sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==", - "dev": true, + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz", + "integrity": "sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw==", + "bundled": true, "requires": { - "node-gyp-build": "4.3.0" + "node-gyp-build": "4.4.0" + }, + "dependencies": { + "node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "bundled": true + } } }, + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "bundled": true + }, + "@types/node": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz", + "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw==", + "bundled": true + }, + "@types/seedrandom": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.1.tgz", + "integrity": "sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==", + "bundled": true + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "bundled": true }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true + "bundled": true + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "bundled": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "bufferutil": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", + "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "catering": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.0.tgz", + "integrity": "sha512-M5imwzQn6y+ODBfgi+cfgZv2hIUI6oYU/0f35Mdb1ujGeqeoI5tOnl9Q13DTH7LW+7er+NYq8stNOKZD/Z3U/A==", + "bundled": true, + "requires": { + "queue-tick": "^1.0.0" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "bundled": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "bundled": true + } + } + }, + "emittery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", + "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", + "bundled": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "bundled": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "bundled": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "bundled": true + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "bundled": true + }, + "keccak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", + "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", + "bundled": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "leveldown": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", + "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", + "bundled": true, + "requires": { + "abstract-leveldown": "^7.2.0", + "napi-macros": "~2.0.0", + "node-gyp-build": "^4.3.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", + "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", + "bundled": true, + "requires": { + "buffer": "^6.0.3", + "catering": "^2.0.0", + "is-buffer": "^2.0.5", + "level-concat-iterator": "^3.0.0", + "level-supports": "^2.0.1", + "queue-microtask": "^1.2.3" + } + }, + "level-concat-iterator": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", + "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", + "bundled": true, + "requires": { + "catering": "^2.1.0" + } + }, + "level-supports": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", + "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", + "bundled": true + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "bundled": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "bundled": true + }, + "napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", + "bundled": true + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "bundled": true + }, + "node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "bundled": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "bundled": true + }, + "queue-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", + "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==", + "bundled": true + }, + "secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "bundled": true, + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "utf-8-validate": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", + "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + } + } + }, + "ganache-cli": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.12.2.tgz", + "integrity": "sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw==", + "requires": { + "ethereumjs-util": "6.2.1", + "source-map-support": "0.5.12", + "yargs": "13.2.4" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.11.2", + "bundled": true + }, + "@types/pbkdf2": { + "version": "3.1.0", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.1", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "ansi-regex": { + "version": "4.1.0", + "bundled": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "base-x": { + "version": "3.0.8", + "bundled": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "blakejs": { + "version": "1.1.0", + "bundled": true + }, + "bn.js": { + "version": "4.11.9", + "bundled": true + }, + "brorand": { + "version": "1.1.0", + "bundled": true + }, + "browserify-aes": { + "version": "1.2.0", + "bundled": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "bs58": { + "version": "4.0.1", + "bundled": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "bundled": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer-from": { + "version": "1.1.1", + "bundled": true + }, + "buffer-xor": { + "version": "1.0.3", + "bundled": true + }, + "camelcase": { + "version": "5.3.1", + "bundled": true + }, + "cipher-base": { + "version": "1.0.4", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cliui": { + "version": "5.0.0", + "bundled": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "bundled": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true + }, + "create-hash": { + "version": "1.2.0", + "bundled": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "bundled": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "elliptic": { + "version": "6.5.3", + "bundled": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "bundled": true + }, + "end-of-stream": { + "version": "1.4.4", + "bundled": true, + "requires": { + "once": "^1.4.0" + } + }, + "ethereum-cryptography": { + "version": "0.1.3", + "bundled": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "bundled": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "ethjs-util": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, + "evp_bytestokey": { + "version": "1.0.3", + "bundled": true, "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "bufferutil": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", - "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", - "dev": true, - "optional": true, + "execa": { + "version": "1.0.0", + "bundled": true, "requires": { - "node-gyp-build": "^4.3.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "catering": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.0.tgz", - "integrity": "sha512-M5imwzQn6y+ODBfgi+cfgZv2hIUI6oYU/0f35Mdb1ujGeqeoI5tOnl9Q13DTH7LW+7er+NYq8stNOKZD/Z3U/A==", - "dev": true, + "find-up": { + "version": "3.0.0", + "bundled": true, "requires": { - "queue-tick": "^1.0.0" + "locate-path": "^3.0.0" } }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, + "get-caller-file": { + "version": "2.0.5", + "bundled": true + }, + "get-stream": { + "version": "4.1.0", + "bundled": true, "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "pump": "^3.0.0" } }, - "emittery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.0.tgz", - "integrity": "sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==", - "dev": true + "hash-base": { + "version": "3.1.0", + "bundled": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } }, "hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, + "bundled": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -28252,150 +36123,390 @@ }, "hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, + "bundled": true, "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.1" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, "inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "bundled": true }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true + "invert-kv": { + "version": "2.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-hex-prefixed": { + "version": "1.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true }, "keccak": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", - "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", - "dev": true, + "bundled": true, "requires": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" } }, - "leveldown": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", - "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", - "dev": true, + "lcid": { + "version": "2.0.0", + "bundled": true, "requires": { - "abstract-leveldown": "^7.2.0", - "napi-macros": "~2.0.0", - "node-gyp-build": "^4.3.0" - }, - "dependencies": { - "abstract-leveldown": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", - "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", - "dev": true, - "requires": { - "buffer": "^6.0.3", - "catering": "^2.0.0", - "is-buffer": "^2.0.5", - "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - } - }, - "level-concat-iterator": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", - "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", - "dev": true, - "requires": { - "catering": "^2.1.0" - } - }, - "level-supports": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", - "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", - "dev": true - } + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "bundled": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "bundled": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.3.0", + "bundled": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, + "mimic-fn": { + "version": "2.1.0", + "bundled": true + }, "minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "bundled": true }, "minimalistic-crypto-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true + "bundled": true }, - "napi-macros": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", - "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true + "nice-try": { + "version": "1.0.5", + "bundled": true }, "node-addon-api": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true + "bundled": true }, "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true + "version": "4.2.3", + "bundled": true }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "^2.0.0" + } }, - "queue-tick": { + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-locale": { + "version": "3.1.0", + "bundled": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", - "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==", - "dev": true + "bundled": true + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-is-promise": { + "version": "2.1.0", + "bundled": true + }, + "p-limit": { + "version": "2.3.0", + "bundled": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "bundled": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "pbkdf2": { + "version": "3.1.1", + "bundled": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "randombytes": { + "version": "2.1.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "2.0.0", + "bundled": true + }, + "ripemd160": { + "version": "2.0.2", + "bundled": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.6", + "bundled": true, + "requires": { + "bn.js": "^4.11.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "bundled": true + }, + "scrypt-js": { + "version": "3.0.1", + "bundled": true }, "secp256k1": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", - "dev": true, + "bundled": true, "requires": { "elliptic": "^6.5.2", "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" } }, - "utf-8-validate": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", - "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", - "dev": true, - "optional": true, + "semver": { + "version": "5.7.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "setimmediate": { + "version": "1.0.5", + "bundled": true + }, + "sha.js": { + "version": "2.4.11", + "bundled": true, "requires": { - "node-gyp-build": "^4.3.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.3", + "bundled": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true + }, + "source-map-support": { + "version": "0.5.12", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "3.1.0", + "bundled": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "bundled": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-hex-prefix": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "which": { + "version": "1.3.1", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "wrap-ansi": { + "version": "5.1.0", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true + }, + "yargs": { + "version": "13.2.4", + "bundled": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "yargs-parser": { + "version": "13.1.2", + "bundled": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, + "ganache-time-traveler": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/ganache-time-traveler/-/ganache-time-traveler-1.0.16.tgz", + "integrity": "sha512-oUaQge9tiT/zzcGqehqJcoH10claKi9QFhq7zI1Wa3KtdPobjgLVMYvqXCJuHCAZoS7sHvLB/N/rSnhmivxaKw==" + }, "generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -28407,8 +36518,7 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", @@ -28507,23 +36617,6 @@ "process": "^0.11.10" } }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "requires": { - "ini": "2.0.0" - }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - } - } - }, "globals": { "version": "13.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", @@ -28533,35 +36626,29 @@ } }, "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "requires": { + "@sindresorhus/is": "^4.6.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" }, "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" } } }, @@ -28571,15 +36658,15 @@ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, "graphdb": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/graphdb/-/graphdb-2.0.0.tgz", - "integrity": "sha512-9YzAzmTHhUrdJiogQvjRmRlW/SLO6GLE2IUwML4fN8EXbJLz7ABWjFwB7nPJU9fROS+faklNPmKMfP8dbr/aAw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/graphdb/-/graphdb-2.0.2.tgz", + "integrity": "sha512-ORbS7yw/kTUdKXyeO7QaXx1I3fxigej3KQQdrVSpu0ZQ1W7OVQHDAd/Gu+x2clpwm6sela94Uh/+YKkQGbZqmA==", "requires": { - "axios": "^0.21.1", + "axios": "^0.21.4", "base64url": "^3.0.1", "eslint-config-google": "^0.13.0", "jsonld-streaming-parser": "^2.2.0", - "n3": "^1.7.0", + "n3": "^1.16.2", "pino": "^5.17.0", "qs": "^6.9.4", "rdfxml-streaming-parser": "^1.4.0", @@ -28637,8 +36724,12 @@ "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" + }, + "hamming-distance": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hamming-distance/-/hamming-distance-1.0.0.tgz", + "integrity": "sha512-hYz2IIKtyuZGfOqCs7skNiFEATf+v9IUNSOaQSr6Ll4JOxxWhOvXvc3mIdCW82Z3xW+zUoto7N/ssD4bDxAWoA==" }, "har-schema": { "version": "2.0.0", @@ -28663,24 +36754,32 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbol-support-x": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-to-string-tag-x": { "version": "1.4.1", @@ -28752,12 +36851,6 @@ } } }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -28810,14 +36903,42 @@ "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "header-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", + "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.3" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + } + } }, "heap": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz", "integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=" }, + "hex-to-binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hex-to-binary/-/hex-to-binary-1.0.1.tgz", + "integrity": "sha512-m1ykzQs9fKfgfzXj2oV5xAWoyGaudwa0qxY4IDUOgY8J69fKY7mXdwTfQHtS3Y5kglpwM7UmyCSQFKnL87FrdQ==" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -28891,7 +37012,7 @@ "http-https": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" }, "http-link-header": { "version": "1.0.3", @@ -28925,6 +37046,15 @@ "sshpk": "^1.7.0" } }, + "http2-wrapper": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.11.tgz", + "integrity": "sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -28962,7 +37092,7 @@ "punycode": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==" } } }, @@ -28988,6 +37118,11 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, "immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", @@ -29002,12 +37137,6 @@ "resolve-from": "^4.0.0" } }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -29080,9 +37209,9 @@ } }, "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" }, "ip-address": { "version": "8.1.0", @@ -29200,7 +37329,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -29224,15 +37352,6 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-core-module": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", @@ -29316,6 +37435,11 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, + "is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==" + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -29347,16 +37471,6 @@ "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, "is-ip": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", @@ -29370,48 +37484,44 @@ "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-1.0.1.tgz", "integrity": "sha512-DhWU/kqY7X2F6KrrVTu7mHlbd2Pbo4D1YkAzasBMjQs6lJAoefxaA6m6CpSX0K6pjt9D0b9PNFI5zduy/vzOYw==" }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + "is-lower-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", + "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", + "requires": { + "lower-case": "^1.1.0" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + } + } }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "requires": { "has-tostringtag": "^1.0.0" } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, "is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -29451,6 +37561,14 @@ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -29473,14 +37591,14 @@ } }, "is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", "has-tostringtag": "^1.0.0" } }, @@ -29492,8 +37610,23 @@ "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, + "is-upper-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", + "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", + "requires": { + "upper-case": "^1.1.0" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } }, "is-windows": { "version": "1.0.2", @@ -29507,12 +37640,6 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -29866,8 +37993,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-2-csv": { "version": "3.15.1", @@ -29879,9 +38005,9 @@ } }, "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "json-parse-better-errors": { "version": "1.0.2", @@ -29890,6 +38016,28 @@ "dev": true, "peer": true }, + "json-pointer": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", + "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", + "requires": { + "foreach": "^2.0.4" + } + }, + "json-rpc-engine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", + "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", + "requires": { + "eth-rpc-errors": "^3.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==" + }, "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -29931,7 +38079,7 @@ "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "requires": { "graceful-fs": "^4.1.6" } @@ -30000,6 +38148,11 @@ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" }, + "jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==" + }, "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -30009,6 +38162,30 @@ "through": ">=2.2.7 <3" } }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, "jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -30031,6 +38208,31 @@ "object.assign": "^4.1.2" } }, + "just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "k-bucket": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-5.1.0.tgz", @@ -30049,17 +38251,28 @@ "readable-stream": "^3.6.0" } }, + "keccak256": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/keccak256/-/keccak256-1.0.6.tgz", + "integrity": "sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==", + "requires": { + "bn.js": "^5.2.0", + "buffer": "^6.0.3", + "keccak": "^3.0.2" + } + }, "keypair": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.4.tgz", "integrity": "sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg==" }, "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.3.tgz", + "integrity": "sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==", "requires": { - "json-buffer": "3.0.0" + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" } }, "kind-of": { @@ -30146,13 +38359,117 @@ "language-subtag-registry": "~0.3.2" } }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", "requires": { - "package-json": "^6.3.0" + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + } } }, "leven": { @@ -30257,9 +38574,9 @@ } }, "libp2p-interfaces": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-1.1.0.tgz", - "integrity": "sha512-5nc/HZJgeks1qfkyYQdI84hcZLF4SJKJSUx33JpO0w7v7R+obz+HOwk0GSa4/ZvQHjX+/+OWC4NYVA0yZxZXag==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-1.3.1.tgz", + "integrity": "sha512-Bh991Nv2KT/jZ7DjPd/zqhk8cCtkHl6OWw8lyK7wBX7Aj3/ezGwjoDABJzKgt1lbvcgCeQIbzPiIbaKj4DUI4w==", "requires": { "abort-controller": "^3.0.0", "abortable-iterator": "^3.0.0", @@ -30268,12 +38585,33 @@ "it-length-prefixed": "^5.0.2", "it-pipe": "^1.1.0", "it-pushable": "^1.4.2", - "libp2p-crypto": "^0.19.5", + "libp2p-crypto": "^0.20.0", "multiaddr": "^10.0.0", "multiformats": "^9.1.2", - "peer-id": "^0.15.0", + "p-queue": "^6.6.2", + "peer-id": "^0.15.4", "protobufjs": "^6.10.2", "uint8arrays": "^3.0.0" + }, + "dependencies": { + "libp2p-crypto": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.20.0.tgz", + "integrity": "sha512-WgIW9rYcWaO/5j2T6NW3R6Q46yvp2ZfFErqRMbi4/pOTL3T7+OROYpL/1iWVksWkXyurU/t2qFsIijWMxR5C4Q==", + "requires": { + "err-code": "^3.0.1", + "iso-random-stream": "^2.0.0", + "keypair": "^1.0.4", + "multiformats": "^9.4.5", + "noble-ed25519": "^1.2.6", + "noble-secp256k1": "^1.2.10", + "node-forge": "^0.10.0", + "pem-jwk": "^2.0.0", + "protobufjs": "^6.11.2", + "uint8arrays": "^3.0.0", + "ursa-optional": "^0.10.1" + } + } } }, "libp2p-kad-dht": { @@ -30307,12 +38645,11 @@ } }, "libp2p-mplex": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.4.tgz", - "integrity": "sha512-a8Oy68EXaSBBXGOGYMuwBcpnynkhqAFJ3LiyV24u9fE4wTxvuWTr0prSyKc+KC8QsLuX3A+CAdSgxqm09NbumQ==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.7.tgz", + "integrity": "sha512-21VV0DZWuOsHgitWy1GZD1M/kki3a/hVoAJ5QC48p01JNSK5W8gxRiZtq7cCGJ/xNpbQxvMlMtS5eq8CFRlysg==", "requires": { - "abort-controller": "^3.0.0", - "abortable-iterator": "^3.0.0", + "abortable-iterator": "^3.0.2", "bl": "^5.0.0", "debug": "^4.3.1", "err-code": "^3.0.1", @@ -30573,22 +38910,83 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.flatmap": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", + "integrity": "sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==" + }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -30598,7 +38996,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -30643,8 +39040,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "peer": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -30666,10 +39061,25 @@ "tslib": "^2.0.3" } }, + "lower-case-first": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", + "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", + "requires": { + "lower-case": "^1.1.2" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + } + } + }, "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" }, "lru-cache": { "version": "6.0.0", @@ -30687,6 +39097,11 @@ "es5-ext": "~0.10.2" } }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==" + }, "mafmt": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/mafmt/-/mafmt-10.0.0.tgz", @@ -30744,6 +39159,29 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "requires": { + "xtend": "~4.0.0" + } + } + } + }, "memoizee": { "version": "0.4.15", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", @@ -30829,6 +39267,69 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "merkle-tools": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merkle-tools/-/merkle-tools-1.4.1.tgz", @@ -30837,6 +39338,25 @@ "js-sha3": "^0.8.0" } }, + "merkletreejs": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.2.32.tgz", + "integrity": "sha512-TostQBiwYRIwSE5++jGmacu3ODcKAgqb0Y/pnIohXS7sWxh1gCkSptbmF1a43faehRDpcHf7J/kv0Ml2D/zblQ==", + "requires": { + "bignumber.js": "^9.0.1", + "buffer-reverse": "^1.0.1", + "crypto-js": "^3.1.9-1", + "treeify": "^1.1.0", + "web3-utils": "^1.3.4" + }, + "dependencies": { + "crypto-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", + "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" + } + } + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -30909,6 +39429,13 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } } }, "mime": { @@ -30942,7 +39469,7 @@ "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "requires": { "dom-walk": "^0.1.0" } @@ -31081,7 +39608,7 @@ "mkdirp-promise": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", "requires": { "mkdirp": "*" } @@ -31090,7 +39617,6 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", @@ -31122,7 +39648,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -31130,14 +39655,12 @@ "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -31148,7 +39671,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -31156,20 +39678,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -31178,14 +39697,12 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "requires": { "argparse": "^2.0.1" } @@ -31194,7 +39711,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "requires": { "p-locate": "^5.0.0" } @@ -31203,22 +39719,14 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "requires": { "yocto-queue": "^0.1.0" } @@ -31227,7 +39735,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "requires": { "p-limit": "^3.0.2" } @@ -31235,14 +39742,12 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -31251,7 +39756,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -31261,14 +39765,12 @@ "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -31282,8 +39784,7 @@ "yargs-parser": { "version": "20.2.4", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" } } }, @@ -31292,10 +39793,15 @@ "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" }, + "mock-socket": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.5.tgz", + "integrity": "sha512-3DeNIcsQixWHHKk6NdoBhWI4t1VMj5/HzfnI1rE/pLl5qKx7+gd4DNA07ehTaZ6MoUU053si6Hd+YtiM/tQZfg==" + }, "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "moment-timezone": { "version": "0.5.34", @@ -31345,9 +39851,9 @@ "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==" }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "multiaddr": { "version": "10.0.1", @@ -31398,9 +39904,9 @@ } }, "multiformats": { - "version": "9.4.7", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.4.7.tgz", - "integrity": "sha512-fZbcdf7LnvokPAZYkv4TLXe7PAg9sQ5qLXcwrAmZOloEb2+5FtFiAY+l3/9wsu4oTJXTV3JSggFQQ2dJLS01vA==" + "version": "9.7.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.7.1.tgz", + "integrity": "sha512-TaVmGEBt0fhxiNJMGphBfB+oGvUxFs8KgGvgl8d3C+GWtrFcvXdJ2196eg+dYhmSFClmgFfSfJEklo+SZzdNuw==" }, "multihashes": { "version": "0.4.21", @@ -31486,9 +39992,9 @@ } }, "n3": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.12.2.tgz", - "integrity": "sha512-vY1HBEraMPWQFLEK6sn67DeGMqTuwXnlEYpZ8gTVukKQSz2f44d+t+ZcmwEt8c99FlVAbpmMb/435Q8t0OC+7w==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.16.2.tgz", + "integrity": "sha512-5vYa2HuNEJ+a26FEs4FGgfFLgaPOODaZpJlc7FS0eUjDumc4uK0cvx216PjKXBkLzmAsSqGgQPwqztcLLvwDsw==", "requires": { "queue-microtask": "^1.1.2", "readable-stream": "^3.6.0" @@ -31526,7 +40032,7 @@ "nano-json-stream-parser": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" }, "nanoid": { "version": "3.3.1", @@ -31670,6 +40176,36 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, + "nise": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", + "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": ">=5", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + } + } + }, "no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -31679,11 +40215,37 @@ "tslib": "^2.0.3" } }, + "noble-ed25519": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/noble-ed25519/-/noble-ed25519-1.2.6.tgz", + "integrity": "sha512-zfnWqg9FVMp8CnzUpAjbt1nDXpDjCvxYiCXdnW1mY8zQHw/6twUlkFm14VPdojVzc0kcd+i9zT79+26GcNbsuQ==" + }, + "noble-secp256k1": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/noble-secp256k1/-/noble-secp256k1-1.2.14.tgz", + "integrity": "sha512-GSCXyoZBUaaPwVWdYncMEmzlSUjF9J/YeEHpklYJCyg8wPuJP3NzDx0BkiwArzINkdX2HJHvUJhL6vVWPOQQcg==" + }, + "nock": { + "version": "13.2.9", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz", + "integrity": "sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA==", + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.21", + "propagate": "^2.0.0" + } + }, "node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, "node-fetch": { "version": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==" @@ -31698,6 +40260,14 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" }, + "node-interval-tree": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-interval-tree/-/node-interval-tree-1.3.3.tgz", + "integrity": "sha512-K9vk96HdTK5fEipJwxSvIIqwTqr4e3HRJeJrNxBSeVMNSC/JWARRaX7etOLOuTmrRMeOI/K5TCJu3aWIwZiNTw==", + "requires": { + "shallowequal": "^1.0.2" + } + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -31804,15 +40374,14 @@ } }, "node-releases": { - "version": "1.1.75", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", - "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "nodemon": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", "dev": true, "requires": { "chokidar": "^3.5.2", @@ -31821,10 +40390,10 @@ "minimatch": "^3.0.4", "pstree.remy": "^1.1.8", "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", "supports-color": "^5.5.0", "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" + "undefsafe": "^2.0.5" }, "dependencies": { "debug": { @@ -31844,6 +40413,11 @@ } } }, + "nofilter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", + "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==" + }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -31877,13 +40451,12 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" }, "npm-run-path": { "version": "4.0.1", @@ -32131,7 +40704,7 @@ "oboe": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", "requires": { "http-https": "^1.0.0" } @@ -32192,6 +40765,11 @@ "word-wrap": "^1.2.3" } }, + "original-require": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", + "integrity": "sha512-5vdKMbE58WaE61uVD+PKyh8xdM398UnjPBLotW2sjG5MzHARwta/+NtMBCBA0t2WQblGYBvq5vsiZpWokwno+A==" + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -32372,26 +40950,6 @@ "release-zalgo": "^1.0.0" } }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "pad-right": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", @@ -32445,6 +41003,29 @@ } } }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "requires": { + "no-case": "^2.2.0" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + } + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -32472,9 +41053,9 @@ "dev": true }, "parse-headers": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz", - "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" }, "parse-json": { "version": "4.0.0", @@ -32515,6 +41096,29 @@ "dev": true, "peer": true }, + "path-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", + "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", + "requires": { + "no-case": "^2.2.0" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + } + } + }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -32578,16 +41182,36 @@ } }, "peer-id": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.15.3.tgz", - "integrity": "sha512-pass5tk6Fbaz7PTD/3fJg2KWqaproHY0B0Ki8GQMEuMjkoLRcS2Vqt9yy6ob/+8uGBmWjRLtbMhaLV4HTyMDfw==", + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.15.4.tgz", + "integrity": "sha512-MDoBIMZYwQIAHaZQUwsIcvoFgdbIl5GtZMwSkXpIYvc5v0TSDv+u8WsTKrKt2Vv28tHFFDJQdVzu3T4qTPzK+w==", "requires": { "class-is": "^1.1.0", - "libp2p-crypto": "^0.19.0", + "libp2p-crypto": "^0.20.0", "minimist": "^1.2.5", "multiformats": "^9.4.5", "protobufjs": "^6.10.2", "uint8arrays": "^3.0.0" + }, + "dependencies": { + "libp2p-crypto": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.20.0.tgz", + "integrity": "sha512-WgIW9rYcWaO/5j2T6NW3R6Q46yvp2ZfFErqRMbi4/pOTL3T7+OROYpL/1iWVksWkXyurU/t2qFsIijWMxR5C4Q==", + "requires": { + "err-code": "^3.0.1", + "iso-random-stream": "^2.0.0", + "keypair": "^1.0.4", + "multiformats": "^9.4.5", + "noble-ed25519": "^1.2.6", + "noble-secp256k1": "^1.2.10", + "node-forge": "^0.10.0", + "pem-jwk": "^2.0.0", + "protobufjs": "^6.11.2", + "uint8arrays": "^3.0.0", + "ursa-optional": "^0.10.1" + } + } } }, "pem-jwk": { @@ -32603,11 +41227,15 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pidtree": { "version": "0.5.0", @@ -32618,9 +41246,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "peer": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pino": { "version": "7.6.3", @@ -32747,15 +41373,20 @@ "dev": true, "peer": true }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==" + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==" }, "prettier": { "version": "2.6.2", @@ -32763,11 +41394,6 @@ "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" - }, "private-ip": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/private-ip/-/private-ip-2.2.1.tgz", @@ -32826,6 +41452,15 @@ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-1.1.6.tgz", "integrity": "sha1-zQTv9G9clcOn0EVZHXm14+AfEtc=" }, + "promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==", + "requires": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + } + }, "prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", @@ -32838,15 +41473,20 @@ "react-is": "^16.8.1" } }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==" + }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" }, "protobufjs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", - "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -32875,8 +41515,7 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, "pseudomap": { "version": "1.0.2", @@ -32905,6 +41544,13 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } } }, "pump": { @@ -32980,14 +41626,10 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "requires": { - "escape-goat": "^2.0.0" - } + "pure-rand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.1.tgz", + "integrity": "sha512-ksWccjmXOHU2gJBnH0cK1lSYdvSZ0zLoCMSz/nTGh6hDvCSgcRxDyIcOBD6KNxFz3xhMPm/T267Tbe2JRymKEQ==" }, "qs": { "version": "6.10.3", @@ -33031,6 +41673,11 @@ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz", "integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==" }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -33345,7 +41992,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -33363,6 +42009,25 @@ "ms": "^2.1.1" } }, + "redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "requires": { + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" + } + }, + "redux-saga": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.0.0.tgz", + "integrity": "sha512-GvJWs/SzMvEQgeaw6sRMXnS2FghlvEGsHiEtTLpJqc/FHF3I5EE/B+Hq5lyHZ8LSoT2r/X/46uWvkdCnK9WgHA==", + "requires": { + "@redux-saga/core": "^1.0.0" + } + }, "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -33372,9 +42037,7 @@ "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true, - "peer": true + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "regex-not": { "version": "1.0.2", @@ -33426,14 +42089,13 @@ "dev": true }, "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "peer": true, + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" } }, "regexpp": { @@ -33441,24 +42103,6 @@ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, "relative-to-absolute-iri": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.6.tgz", @@ -33558,6 +42202,31 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, + "reselect": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz", + "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==" + }, + "reselect-tree": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/reselect-tree/-/reselect-tree-1.3.7.tgz", + "integrity": "sha512-kZN+C1cVJ6fFN2smSb0l4UvYZlRzttgnu183svH4NrU22cBY++ikgr2QT75Uuk4MYpv5gXSVijw4c5U6cx6GKg==", + "requires": { + "debug": "^3.1.0", + "json-pointer": "^0.6.1", + "reselect": "^4.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -33567,6 +42236,11 @@ "path-parse": "^1.0.6" } }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -33597,11 +42271,18 @@ "peer": true }, "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } } }, "restore-cursor": { @@ -33672,13 +42353,6 @@ "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "requires": { "bn.js": "^5.2.0" - }, - "dependencies": { - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - } } }, "rolling-rate-limiter": { @@ -33699,11 +42373,15 @@ "aproba": "^1.1.1" } }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" + }, "rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", - "dev": true, + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", "requires": { "tslib": "^2.1.0" } @@ -33713,6 +42391,14 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-event-emitter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", + "requires": { + "events": "^3.0.0" + } + }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", @@ -33807,31 +42493,19 @@ "integrity": "sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ=", "dev": true }, + "semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" + }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" } }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -33874,6 +42548,38 @@ } } }, + "sentence-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", + "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", + "requires": { + "no-case": "^2.2.0", + "upper-case-first": "^1.1.2" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", + "requires": { + "upper-case": "^1.1.1" + } + } + } + }, "seq-queue": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", @@ -33949,7 +42655,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -33987,6 +42692,11 @@ "resolved": "https://registry.npmjs.org/set-delayed-interval/-/set-delayed-interval-1.0.0.tgz", "integrity": "sha512-29fhAwuZlLcuBnW/EwxvLcg2D3ELX+VBDNhnavs3YYkab72qmrcSeQNVdzl8EcPPahGQXhBM6MKdPLCQGMDakw==" }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==" + }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -34019,6 +42729,11 @@ "safe-buffer": "^5.0.1" } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -34065,6 +42780,16 @@ "decompress-response": "^3.3.0", "once": "^1.3.1", "simple-concat": "^1.0.0" + }, + "dependencies": { + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "requires": { + "mimic-response": "^1.0.0" + } + } } }, "simple-git": { @@ -34092,10 +42817,59 @@ } } }, - "sleep-async": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sleep-async/-/sleep-async-1.0.5.tgz", - "integrity": "sha512-G2B+GBBshG+gSKZZeCTX5ONnF7XVUVpYP0O4QYWmXH6XIpEUfcFbWWwQKleZixg68PWEArvVEi23159F7ohlUQ==" + "simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "sinon": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.0.tgz", + "integrity": "sha512-ugA6BFmE+WrJdh0owRZHToLd32Uw3Lxq6E6LtNRU+xTVBefx632h03Q7apXWRsRdZAJ41LB8aUfn2+O4jsDNMw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^6.1.1", + "diff": "^5.0.0", + "nise": "^5.1.1", + "supports-color": "^7.2.0" + }, + "dependencies": { + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "slice-ansi": { "version": "4.0.0", @@ -34136,6 +42910,29 @@ "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", "dev": true }, + "snake-case": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", + "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", + "requires": { + "no-case": "^2.2.0" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + } + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -34353,8 +43150,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { "version": "0.5.3", @@ -34775,14 +43571,14 @@ "integrity": "sha512-GYbJh0ife8PvryWSyFifY1m1uj6zO12d9duuP6xltiOolUz44eKasp5gbFhRbFbLy50ik6hcKn4Pbxl9AkxB+Q==" }, "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" }, "string_decoder": { "version": "1.3.0", @@ -34833,21 +43629,23 @@ } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "strip-ansi": { @@ -34891,6 +43689,22 @@ "has-flag": "^3.0.0" } }, + "swap-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", + "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", + "requires": { + "lower-case": "^1.1.1", + "upper-case": "^1.1.1" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + } + } + }, "swarm-js": { "version": "0.1.40", "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", @@ -34918,17 +43732,12 @@ "ieee754": "^1.1.13" } }, - "eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" + "mimic-response": "^1.0.0" } }, "fs-extra": { @@ -34944,7 +43753,7 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" }, "got": { "version": "7.1.0", @@ -34970,12 +43779,17 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "p-cancelable": { "version": "0.3.0", @@ -34985,26 +43799,18 @@ "p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", "requires": { "p-finally": "^1.0.0" } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "^1.0.1" - } } } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "sync-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", @@ -35078,11 +43884,11 @@ }, "dependencies": { "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "safe-buffer": { @@ -35098,9 +43904,9 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "peer": true, "requires": { @@ -35379,7 +44185,7 @@ "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==" }, "timeout-abort-controller": { "version": "1.1.1", @@ -35416,6 +44222,30 @@ "next-tick": "1" } }, + "title-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", + "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.0.3" + }, + "dependencies": { + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + } + } + }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -35435,8 +44265,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { "version": "0.3.0", @@ -35562,7 +44391,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -35621,11 +44449,39 @@ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" }, + "treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==" + }, "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, + "truffle": { + "version": "5.5.26", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-5.5.26.tgz", + "integrity": "sha512-czL1BxabxFRhH8AK2LrF7d6hO8zS74meccM0dLxh78ahEAGx2BRPfw2dUZp2Ad5kVvVZGIedJeg9hhpXbVuIAw==", + "requires": { + "@truffle/db": "^1.0.18", + "@truffle/db-loader": "^0.1.28", + "@truffle/debugger": "^11.0.4", + "app-module-path": "^2.2.0", + "ganache": "7.4.0", + "mocha": "9.2.2", + "original-require": "^1.0.1" + } + }, + "truffle-assertions": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz", + "integrity": "sha512-9g2RhaxU2F8DeWhqoGQvL/bV8QVoSnQ6PY+ZPvYRP5eF7+/8LExb4mjLx/FeliLTjc3Tv1SABG05Gu5qQ/ErmA==", + "requires": { + "assertion-error": "^1.1.0", + "lodash.isequal": "^4.5.0" + } + }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -35648,9 +44504,9 @@ } }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "tty-browserify": { "version": "0.0.0", @@ -35672,6 +44528,11 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -35719,6 +44580,27 @@ "is-typedarray": "^1.0.0" } }, + "typescript-compare": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", + "integrity": "sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==", + "requires": { + "typescript-logic": "^0.0.0" + } + }, + "typescript-logic": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/typescript-logic/-/typescript-logic-0.0.0.tgz", + "integrity": "sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==" + }, + "typescript-tuple": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.1.tgz", + "integrity": "sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==", + "requires": { + "typescript-compare": "^0.0.2" + } + }, "uglify-js": { "version": "3.15.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", @@ -35863,13 +44745,13 @@ } }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, @@ -35884,6 +44766,11 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" }, + "undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==" + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -35915,15 +44802,6 @@ "imurmurhash": "^0.1.4" } }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -36037,28 +44915,20 @@ "optional": true, "peer": true }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" } }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==" + }, "upper-case-first": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", @@ -36109,22 +44979,22 @@ } }, "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", "requires": { - "prepend-http": "^2.0.0" + "prepend-http": "^1.0.1" } }, "url-set-query": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" }, "url-to-options": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==" }, "ursa-optional": { "version": "0.10.2", @@ -36143,11 +45013,11 @@ "peer": true }, "utf-8-validate": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.6.tgz", - "integrity": "sha512-hoY0gOf9EkCw+nimK21FVKHUIG1BMqSiRwxB/q3A9yKZOrOI99PP77BxmarDqWz6rG3vVYiBWfhG8z2Tl+7fZA==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", "requires": { - "node-gyp-build": "^4.2.0" + "node-gyp-build": "^4.3.0" } }, "utf8": { @@ -36390,7 +45260,7 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, "optional": true, "peer": true, @@ -36646,151 +45516,93 @@ } } }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + }, "web-streams-ponyfill": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/web-streams-ponyfill/-/web-streams-ponyfill-1.4.2.tgz", "integrity": "sha512-LCHW+fE2UBJ2vjhqJujqmoxh1ytEDEr0dPO3CabMdMDJPKmsaxzS90V1Ar6LtNE5VHLqxR4YMEj1i4lzMAccIA==" }, "web3": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.6.0.tgz", - "integrity": "sha512-rWpXnO88MiVX5yTRqMBCVKASxc7QDkXZZUl1D48sKlbX4dt3BAV+nVMVUKCBKiluZ5Bp8pDrVCUdPx/jIYai5Q==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.7.5.tgz", + "integrity": "sha512-3jHZTWyXt975AOXgnZKayiSWDLpoSKk9fZtLk1hURQtt7AdSbXPT8AK9ooBCm0Dt3GYaOeNcHGaiHC3gtyqhLg==", "requires": { - "web3-bzz": "1.6.0", - "web3-core": "1.6.0", - "web3-eth": "1.6.0", - "web3-eth-personal": "1.6.0", - "web3-net": "1.6.0", - "web3-shh": "1.6.0", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "web3-bzz": "1.7.5", + "web3-core": "1.7.5", + "web3-eth": "1.7.5", + "web3-eth-personal": "1.7.5", + "web3-net": "1.7.5", + "web3-shh": "1.7.5", + "web3-utils": "1.7.5" } }, "web3-bzz": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.6.0.tgz", - "integrity": "sha512-ugYV6BsinwhIi0CsLWINBz4mqN9wR9vNG0WmyEbdECjxcPyr6vkaWt4qi0zqlUxEnYAwGj4EJXNrbjPILntQTQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.7.5.tgz", + "integrity": "sha512-Z53sY0YK/losqjJncmL4vP0zZI9r6tiXg6o7R6e1JD2Iy7FH3serQvU+qXmPjqEBzsnhf8wTG+YcBPB3RHpr0Q==", "requires": { "@types/node": "^12.12.6", - "got": "9.6.0", + "got": "12.1.0", "swarm-js": "^0.1.40" }, "dependencies": { "@types/node": { - "version": "12.20.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.29.tgz", - "integrity": "sha512-dU2ypz+gO5va1OBvs0iT3BNHG5SgTqRvq8r+kU3e/LAseKapUJ8zTUE9Ve9fTpi27tN/7ahOAhCJwQWsffvsyw==" + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" } } }, "web3-core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.6.0.tgz", - "integrity": "sha512-o0WsLrJ2yD+HAAc29lGMWJef/MutTyuzpJC0UzLJtIAQJqtpDalzWINEu4j8XYXGk34N/V6vudtzRPo23QEE6g==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.7.5.tgz", + "integrity": "sha512-UgOWXZr1fR/3cUQJKWbfMwRxj1/N7o6RSd/dHqdXBlOD+62EjNZItFmLRg5veq5kp9YfXzrNw9bnDkXfsL+nKQ==", "requires": { - "@types/bn.js": "^4.11.5", + "@types/bn.js": "^5.1.0", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-requestmanager": "1.6.0", - "web3-utils": "1.6.0" + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-core-requestmanager": "1.7.5", + "web3-utils": "1.7.5" }, "dependencies": { "@types/node": { - "version": "12.20.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.29.tgz", - "integrity": "sha512-dU2ypz+gO5va1OBvs0iT3BNHG5SgTqRvq8r+kU3e/LAseKapUJ8zTUE9Ve9fTpi27tN/7ahOAhCJwQWsffvsyw==" - }, - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" } } }, "web3-core-helpers": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.6.0.tgz", - "integrity": "sha512-H/IAH/0mrgvad/oxVKiAMC7qDzMrPPe/nRKmJOoIsupRg9/frvL62kZZiHhqVD1HMyyswbQFC69QRl7JqWzvxg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.7.5.tgz", + "integrity": "sha512-lDDjTks6Q6aNUO87RYrY2xub3UWTKr/RIWxpHJODEqkLxZS1dWdyliJ6aIx3031VQwsNT5HE7NvABe/t0p3iDQ==", "requires": { - "web3-eth-iban": "1.6.0", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "web3-eth-iban": "1.7.5", + "web3-utils": "1.7.5" } }, "web3-core-method": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.6.0.tgz", - "integrity": "sha512-cHekyEil4mtcCOk6Q1Zh4y+2o5pTwsLIxP6Bpt4BRtZgdsyPiadYJpkLAVT/quch5xN7Qs5ZwG5AvRCS3VwD2g==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.7.5.tgz", + "integrity": "sha512-ApTvq1Llzlbxmy0n4L7QaE6NodIsR80VJqk8qN4kLg30SGznt/pNJFebryLI2kpyDmxSgj1TjEWzmHJBp6FhYg==", "requires": { - "@ethereumjs/common": "^2.4.0", - "@ethersproject/transactions": "^5.0.0-beta.135", - "web3-core-helpers": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "@ethersproject/transactions": "^5.6.2", + "web3-core-helpers": "1.7.5", + "web3-core-promievent": "1.7.5", + "web3-core-subscriptions": "1.7.5", + "web3-utils": "1.7.5" } }, "web3-core-promievent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.6.0.tgz", - "integrity": "sha512-ZzsevjMXWkhqW9dnVfTfb1OUcK7jKcKPvPIbQ4boJccNgvNZPZKlo8xB4pkAX38n4c59O5mC7Lt/z2QL/M5CeQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.7.5.tgz", + "integrity": "sha512-uZ1VRErVuhiLtHlyt3oEH/JSvAf6bWPndChHR9PG7i1Zfqm6ZVCeM91ICTPmiL8ddsGQOxASpnJk4vhApcTIww==", "requires": { "eventemitter3": "4.0.4" }, @@ -36803,24 +45615,24 @@ } }, "web3-core-requestmanager": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.6.0.tgz", - "integrity": "sha512-CY5paPdiDXKTXPWaEUZekDfUXSuoE2vPxolwqzsvKwFWH5+H1NaXgrc+D5HpufgSvTXawTw0fy7IAicg8+PWqA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.7.5.tgz", + "integrity": "sha512-3KpfxW/wVH4mgwWEsSJGHKrtRVoijWlDxtUrm17xgtqRNZ2mFolifKnHAUKa0fY48C9CrxmcCiMIi3W4G6WYRw==", "requires": { "util": "^0.12.0", - "web3-core-helpers": "1.6.0", - "web3-providers-http": "1.6.0", - "web3-providers-ipc": "1.6.0", - "web3-providers-ws": "1.6.0" + "web3-core-helpers": "1.7.5", + "web3-providers-http": "1.7.5", + "web3-providers-ipc": "1.7.5", + "web3-providers-ws": "1.7.5" } }, "web3-core-subscriptions": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.6.0.tgz", - "integrity": "sha512-kY9WZUY/m1URSOv3uTLshoZD9ZDiFKReIzHuPUkxFpD5oYNmr1/aPQNPCrrMxKODR7UVX/D90FxWwCYqHhLaxQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.7.5.tgz", + "integrity": "sha512-YK6utQ7Wwjbe4XZOIA8quWGBPi1lFDS1A+jQYwxKKrCvm6BloBNc3FhvrcSYlDhLe/kOy8+2Je8i9amndgT4ww==", "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.6.0" + "web3-core-helpers": "1.7.5" }, "dependencies": { "eventemitter3": { @@ -36831,276 +45643,169 @@ } }, "web3-eth": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.6.0.tgz", - "integrity": "sha512-qJMvai//r0be6I9ghU24/152f0zgJfYC23TMszN3Y6jse1JtjCBP2TlTibFcvkUN1RRdIUY5giqO7ZqAYAmp7w==", - "requires": { - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-eth-accounts": "1.6.0", - "web3-eth-contract": "1.6.0", - "web3-eth-ens": "1.6.0", - "web3-eth-iban": "1.6.0", - "web3-eth-personal": "1.6.0", - "web3-net": "1.6.0", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.7.5.tgz", + "integrity": "sha512-BucjvqZyDWYkGlsFX+OnOBub0YutlC1KZiNGibdmvtNX0NQK+8iw1uzAoL9yTTwCSszL7lnkFe8N+HCOl9B4Dw==", + "requires": { + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-core-subscriptions": "1.7.5", + "web3-eth-abi": "1.7.5", + "web3-eth-accounts": "1.7.5", + "web3-eth-contract": "1.7.5", + "web3-eth-ens": "1.7.5", + "web3-eth-iban": "1.7.5", + "web3-eth-personal": "1.7.5", + "web3-net": "1.7.5", + "web3-utils": "1.7.5" } }, "web3-eth-abi": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.6.0.tgz", - "integrity": "sha512-fImomGE9McuTMJLwK8Tp0lTUzXqCkWeMm00qPVIwpJ/h7lCw9UFYV9+4m29wSqW6FF+FIZKwc6UBEf9dlx3orA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.7.5.tgz", + "integrity": "sha512-qWHvF7sayxql9BD1yqK9sZRLBQ66eJzGeaU53Y1PRq2iFPrhY6NUWxQ3c3ps0rg+dyObvRbloviWpKXcS4RE/A==", "requires": { - "@ethersproject/abi": "5.0.7", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "@ethersproject/abi": "^5.6.3", + "web3-utils": "1.7.5" } }, "web3-eth-accounts": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.6.0.tgz", - "integrity": "sha512-2f6HS4KIH4laAsNCOfbNX3dRiQosqSY2TRK86C8jtAA/QKGdx+5qlPfYzbI2RjG81iayb2+mVbHIaEaBGZ8sGw==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.7.5.tgz", + "integrity": "sha512-AzMLoTj3RGwKpyp3x3TtHrEeU4VpR99iMOD6NKrWSDumS6QEi0lCo+y7QZhdTlINw3iIA3SFIdvbAOO4NCHSDg==", "requires": { - "@ethereumjs/common": "^2.3.0", - "@ethereumjs/tx": "^3.2.1", + "@ethereumjs/common": "^2.5.0", + "@ethereumjs/tx": "^3.3.2", "crypto-browserify": "3.12.0", "eth-lib": "0.2.8", "ethereumjs-util": "^7.0.10", "scrypt-js": "^3.0.1", "uuid": "3.3.2", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-utils": "1.7.5" }, "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } } } }, "web3-eth-contract": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.6.0.tgz", - "integrity": "sha512-ZUtO77zFnxuFtrc+D+iJ3AzNgFXAVcKnhEYN7f1PNz/mFjbtE6dJ+ujO0mvMbxIZF02t9IZv0CIXRpK0rDvZAw==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.7.5.tgz", + "integrity": "sha512-qab7NPJRKRlTs58ozsqK8YIEwWpxIm3vD/okSIKBGkFx5gIHWW+vGmMh5PDSfefLJM9rCd+T+Lc0LYvtME7uqg==", "requires": { - "@types/bn.js": "^4.11.5", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "@types/bn.js": "^5.1.0", + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-core-promievent": "1.7.5", + "web3-core-subscriptions": "1.7.5", + "web3-eth-abi": "1.7.5", + "web3-utils": "1.7.5" } }, "web3-eth-ens": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.6.0.tgz", - "integrity": "sha512-AG24PNv9qbYHSpjHcU2pViOII0jvIR7TeojJ2bxXSDqfcgHuRp3NZGKv6xFvT4uNI4LEQHUhSC7bzHoNF5t8CA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.7.5.tgz", + "integrity": "sha512-k1Q0msdRv/wac2egpZBIwG3n/sa/KdrVmVJvFm471gLTL4xfUizV5qJjkDVf+ikf9JyDvWJTs5eWNUUbOFIw/A==", "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-promievent": "1.6.0", - "web3-eth-abi": "1.6.0", - "web3-eth-contract": "1.6.0", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-promievent": "1.7.5", + "web3-eth-abi": "1.7.5", + "web3-eth-contract": "1.7.5", + "web3-utils": "1.7.5" } }, "web3-eth-iban": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.6.0.tgz", - "integrity": "sha512-HM/bKBS/e8qg0+Eh7B8C/JVG+GkR4AJty17DKRuwMtrh78YsonPj7GKt99zS4n5sDLFww1Imu/ZIk3+K5uJCjw==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.7.5.tgz", + "integrity": "sha512-mn2W5t/1IpL8OZvzAabLKT4kvwRnZSJ9K0tctndl9sDNWkfITYQibEEhUaNNA50Q5fJKgVudHI/m0gwIVTyG8Q==", "requires": { - "bn.js": "^4.11.9", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "bn.js": "^5.2.1", + "web3-utils": "1.7.5" } }, "web3-eth-personal": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.6.0.tgz", - "integrity": "sha512-8ohf4qAwbShf4RwES2tLHVqa+pHZnS5Q6tV80sU//bivmlZeyO1W4UWyNn59vu9KPpEYvLseOOC6Muxuvr8mFQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.7.5.tgz", + "integrity": "sha512-txh2P/eN8I4AOUKFi9++KKddoD0tWfCuu9Y1Kc41jSRbk6smO88Fum0KWNmYFYhSCX2qiknS1DfqsONl3igoKQ==", "requires": { "@types/node": "^12.12.6", - "web3-core": "1.6.0", - "web3-core-helpers": "1.6.0", - "web3-core-method": "1.6.0", - "web3-net": "1.6.0", - "web3-utils": "1.6.0" + "web3-core": "1.7.5", + "web3-core-helpers": "1.7.5", + "web3-core-method": "1.7.5", + "web3-net": "1.7.5", + "web3-utils": "1.7.5" }, "dependencies": { "@types/node": { - "version": "12.20.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.29.tgz", - "integrity": "sha512-dU2ypz+gO5va1OBvs0iT3BNHG5SgTqRvq8r+kU3e/LAseKapUJ8zTUE9Ve9fTpi27tN/7ahOAhCJwQWsffvsyw==" - }, - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" } } }, "web3-net": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.6.0.tgz", - "integrity": "sha512-LFfG95ovTT2sNHkO1TEfsaKpYcxOSUtbuwHQ0K3G0e5nevKDJkPEFIqIcob40yiwcWoqEjENJP9Bjk8CRrZ99Q==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.7.5.tgz", + "integrity": "sha512-xwuCb2YWw49PmW81AJQ/G+Xi2ikRsYyZXSgyPt4LmZuKjiqg/6kSdK8lZvUi3Pi3wM+QDBXbpr73M/WEkW0KvA==", "requires": { - "web3-core": "1.6.0", - "web3-core-method": "1.6.0", - "web3-utils": "1.6.0" - }, - "dependencies": { - "web3-utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.6.0.tgz", - "integrity": "sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg==", - "requires": { - "bn.js": "^4.11.9", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - } - } + "web3-core": "1.7.5", + "web3-core-method": "1.7.5", + "web3-utils": "1.7.5" } }, "web3-providers-http": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.6.0.tgz", - "integrity": "sha512-sNxHFNv3lnxpmULt34AS6M36IYB/Hzm2Et4yPNzdP1XE644D8sQBZQZaJQdTaza5HfrlwoqU6AOK935armqGuA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.7.5.tgz", + "integrity": "sha512-vPgr4Kzy0M3CHtoP/Bh7qwK/D9h2fhjpoqctdMWVJseOfeTgfOphCKN0uwV8w2VpZgDPXA8aeTdBx5OjmDdStA==", "requires": { - "web3-core-helpers": "1.6.0", - "xhr2-cookies": "1.1.0" + "abortcontroller-polyfill": "^1.7.3", + "cross-fetch": "^3.1.4", + "es6-promise": "^4.2.8", + "web3-core-helpers": "1.7.5" } }, "web3-providers-ipc": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.6.0.tgz", - "integrity": "sha512-ETYdfhpGiGoWpmmSJnONvnPfd3TPivHEGjXyuX+L5FUsbMOVZj9MFLNIS19Cx/YGL8UWJ/8alLJoTcWSIdz/aA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.7.5.tgz", + "integrity": "sha512-aNHx+RAROzO+apDEzy8Zncj78iqWBadIXtpmFDg7uiTn8i+oO+IcP1Yni7jyzkltsysVJHgHWG4kPx50ANCK3Q==", "requires": { "oboe": "2.1.5", - "web3-core-helpers": "1.6.0" + "web3-core-helpers": "1.7.5" } }, "web3-providers-ws": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.6.0.tgz", - "integrity": "sha512-eNRmlhOPCpuVYwBrKBBQRLGPFb4U1Uo44r9EWV69Cpo4gP6XeBTl6nkawhLz6DS0fq79apyPfItJVuSfAy77pA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.7.5.tgz", + "integrity": "sha512-9uJNVVkIGC8PmM9kNbgPth56HDMSSsxZh3ZEENdwO3LNWemaADiQYUDCsD/dMVkn0xsGLHP5dgAy4Q5msqySLg==", "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.6.0", + "web3-core-helpers": "1.7.5", "websocket": "^1.0.32" }, "dependencies": { @@ -37112,14 +45817,28 @@ } }, "web3-shh": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.6.0.tgz", - "integrity": "sha512-ymN0OFL81WtEeSyb+PFpuUv39fR3frGwsZnIg5EVPZvrOIdaDSFcGSLDmafUt0vKSubvLMVYIBOCskRD6YdtEQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.7.5.tgz", + "integrity": "sha512-aCIWJyLMH5H76OybU4ZpUCJ93yNOPATGhJ+KboRPU8QZDzS2CcVhtEzyl27bbvw+rSnVroMLqBgTXBB4mmKI7A==", + "requires": { + "web3-core": "1.7.5", + "web3-core-method": "1.7.5", + "web3-core-subscriptions": "1.7.5", + "web3-net": "1.7.5" + } + }, + "web3-utils": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.5.tgz", + "integrity": "sha512-9AqNOziQky4wNQadEwEfHiBdOZqopIHzQQVzmvvv6fJwDSMhP+khqmAZC7YTiGjs0MboyZ8tWNivqSO1699XQw==", "requires": { - "web3-core": "1.6.0", - "web3-core-method": "1.6.0", - "web3-core-subscriptions": "1.6.0", - "web3-net": "1.6.0" + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" } }, "webidl-conversions": { @@ -37398,10 +46117,15 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -37445,25 +46169,16 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" + "is-typed-array": "^1.1.9" } }, "winston": { @@ -37580,12 +46295,6 @@ "ultron": "~1.1.0" } }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, "xhr": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", @@ -37622,7 +46331,7 @@ "xhr2-cookies": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", "requires": { "cookiejar": "^2.1.1" } @@ -37664,7 +46373,7 @@ "yaeti": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" }, "yallist": { "version": "4.0.0", @@ -37753,7 +46462,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, "requires": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -37764,22 +46472,19 @@ "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, "decamelize": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" } } }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index 24ce413f2..8fd665803 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,14 @@ { "name": "origintrail_node", - "version": "6.0.0-beta.1.38", - "description": "OTNode v6 Beta 1", + "version": "6.0.0-beta.2.0", + "description": "OTNode v6 Beta 2", "main": "index.js", "scripts": { "start": "node index.js", "dev": "nodemon index.js", "prepare": "husky install", "lint-staged": "lint-staged", + "create-account-mapping-signature": "node tools/ot-parachain-account-mapping/create-account-mapping-signature.js ", "test:bdd": "cucumber-js --fail-fast --format progress --format-options '{\"colorsEnabled\": true}' test/bdd/ -r test/bdd/steps/", "test:unit": "nyc --all mocha --exit $(find test/unit -name '*.js')", "test:bdd:release": "cucumber-js --tags=@release --fail-fast --format progress --format-options '{\"colorsEnabled\": true}' test/bdd/ -r test/bdd/steps/", @@ -52,19 +53,32 @@ "openzeppelin-solidity": "3.4.2", "prettier": "^2.6.2", "request": "^2.88.2", + "sinon": "^14.0.0", "slugify": "^1.6.5", - "solc": "0.7.6" + "solc": "0.7.6", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/wallet": "^5.6.2", + "@polkadot/util": "^10.1.4", + "@polkadot/util-crypto": "^10.1.4" }, "dependencies": { "@comunica/query-sparql": "^2.2.1", + "@polkadot/api": "^9.2.1", + "@polkadot/keyring": "^10.1.4", "app-root-path": "^3.0.0", + "assertion-tools": "^1.0.7", + "async": "^3.2.4", + "async-mutex": "^0.3.2", "awilix": "^5.0.1", "axios": "^0.24.0", "big-number": "^2.0.0", "bl": "^5.0.0", - "bn": "^1.0.5", + "bn.js": "^5.2.1", + "cors": "^2.8.5", "crypto-js": "^4.1.1", "deep-extend": "^0.6.0", + "dkg-evm-module": "^1.0.1", "dotenv": "^10.0.0", "elliptic": "^6.5.4", "express": "^4.17.1", @@ -75,22 +89,29 @@ "fast-sort": "^3.1.1", "fastq": "^1.13.0", "fs-extra": "^10.0.0", - "graphdb": "^2.0.0", + "graphdb": "^2.0.2", + "ip": "^1.1.8", "it-concat": "^2.0.0", "it-length-prefixed": "^5.0.3", + "it-map": "^1.0.6", "it-pipe": "^1.1.0", "js-sha3": "^0.8.0", "json-2-csv": "^3.14.4", "json-stable-stringify": "^1.0.1", "jsonld": "^5.2.0", + "jsonschema": "^1.4.1", + "jsonwebtoken": "^8.5.1", + "keccak256": "^1.0.6", "libp2p": "^0.32.4", "libp2p-bootstrap": "^0.13.0", "libp2p-kad-dht": "^0.24.2", - "libp2p-mplex": "^0.10.4", + "libp2p-mplex": "^0.10.7", "libp2p-noise": "^4.0.0", "libp2p-record": "^0.10.5", "libp2p-tcp": "^0.17.2", "merkle-tools": "^1.4.1", + "merkletreejs": "^0.2.32", + "ms": "^2.1.3", "multiformats": "^9.4.7", "mysql2": "^2.3.3", "n3": "^1.12.2", @@ -107,10 +128,10 @@ "sequelize": "^6.9.0", "sequelize-cli": "^6.3.0", "simple-git": "^3.6.0", - "sleep-async": "^1.0.5", "split": "^1.0.1", "streaming-iterables": "^6.0.0", "toobusy-js": "^0.5.1", + "uint8arrays": "^3.0.0", "underscore": "^1.13.1", "unzipper": "^0.10.11", "uuid": "^8.3.2", diff --git a/modules/command/command-executor.js b/src/commands/command-executor.js similarity index 66% rename from modules/command/command-executor.js rename to src/commands/command-executor.js index 3a396e683..62d723e17 100644 --- a/modules/command/command-executor.js +++ b/src/commands/command-executor.js @@ -1,10 +1,9 @@ const async = require('async'); -const sleep = require('sleep-async')().Promise; +const { setTimeout: sleep } = require('timers/promises'); const { forEach } = require('p-iteration'); -const Models = require('../../models'); const Command = require('./command'); -const constants = require('../constants'); +const constants = require('../constants/constants'); /** * Command statuses @@ -23,7 +22,7 @@ const STATUS = { * How many commands will run in parallel * @type {number} */ -const QUEUE_PARALLELISM = 4; +const QUEUE_PARALLELISM = 100; /** * Queues and processes commands @@ -33,27 +32,30 @@ class CommandExecutor { this.ctx = ctx; this.logger = ctx.logger; this.commandResolver = ctx.commandResolver; + this.config = ctx.config; this.started = false; + this.repositoryModuleManager = ctx.repositoryModuleManager; + this.parallelism = QUEUE_PARALLELISM; - this.verboseLoggingEnabled = ctx.config.commandExecutorVerboseLoggingEnabled; + this.verboseLoggingEnabled = this.config.commandExecutorVerboseLoggingEnabled; const that = this; this.queue = async.queue(async (command, callback) => { try { while (!that.started) { if (that.verboseLoggingEnabled) { - that.logger.trace('Command executor has not been started yet. Hibernating...'); + that.logger.trace( + 'Command executor has not been started yet. Hibernating...', + ); } - await sleep.sleep(1000); + // eslint-disable-next-line no-await-in-loop + await sleep(1000); } await this._execute(command); } catch (e) { - this.logger.error({ - msg: `Something went really wrong! OT-node shutting down... ${e}`, - Event_name: constants.ERROR_TYPE.COMMAND_EXECUTOR_ERROR, - }); + this.logger.error(`Something went really wrong! OT-node shutting down... ${e}`); process.exit(1); } @@ -66,9 +68,8 @@ class CommandExecutor { * @returns {Promise} */ async init() { - await forEach( - constants.PERMANENT_COMMANDS, - async (command) => this._startDefaultCommand(command), + await forEach(constants.PERMANENT_COMMANDS, async (command) => + this._startDefaultCommand(command), ); if (this.verboseLoggingEnabled) { this.logger.trace('Command executor has been initialized...'); @@ -90,9 +91,10 @@ class CommandExecutor { * Executes commands * @param command Command */ - async _execute(command) { + async _execute(executeCommand) { + const command = executeCommand; const now = new Date().getTime() / 1000; - await CommandExecutor._update(command, { + await this._update(command, { started_at: now, }); @@ -103,7 +105,7 @@ class CommandExecutor { const handler = this.commandResolver.resolve(command.name); if (command.deadline_at && now > command.deadline_at) { this.logger.warn(`Command ${command.name} and ID ${command.id} is too late...`); - await CommandExecutor._update(command, { + await this._update(command, { status: STATUS.expired, }); try { @@ -112,37 +114,50 @@ class CommandExecutor { result.commands.forEach((c) => this.add(c, c.delay, true)); } } catch (e) { - this.logger.warn(`Failed to handle expired callback for command ${command.name} and ID ${command.id}`); + this.logger.warn( + `Failed to handle expired callback for command ${command.name} and ID ${command.id}`, + ); } return; } - const waitMs = (command.ready_at + command.delay) - now; + const waitMs = command.ready_at + command.delay - now; if (waitMs > 0) { if (this.verboseLoggingEnabled) { - this.logger.trace(`Command ${command.name} with ID ${command.id} should be delayed`); + this.logger.trace( + `Command ${command.name} with ID ${command.id} should be delayed`, + ); } await this.add(command, Math.min(waitMs, constants.MAX_COMMAND_DELAY_IN_MILLS), false); return; } try { - const result = await this._process(async (transaction) => { - await CommandExecutor._update(command, { - status: STATUS.started, - }, transaction); + const processResult = await this._process(async (transaction) => { + await this._update( + command, + { + status: STATUS.started, + }, + transaction, + ); command.data = handler.unpack(command.data); let result = await handler.execute(command, transaction); if (result.repeat) { - await CommandExecutor._update(command, { - status: STATUS.repeating, - }, transaction); + await this._update( + command, + { + status: STATUS.repeating, + }, + transaction, + ); command.data = handler.pack(command.data); const period = command.period - ? command.period : constants.DEFAULT_COMMAND_REPEAT_INTERVAL_IN_MILLS; + ? command.period + : constants.DEFAULT_COMMAND_REPEAT_INTERVAL_IN_MILLS; await this.add(command, period, false); return Command.repeat(); } @@ -155,37 +170,50 @@ class CommandExecutor { } const children = result.commands.map((c) => { - c.parent_id = command.id; - return c; + const newCommand = c; + newCommand.parent_id = command.id; + return newCommand; }); await Promise.all(children.map((e) => this._insert(e, transaction))); - await CommandExecutor._update(command, { - status: STATUS.completed, - }, transaction); + await this._update( + command, + { + status: STATUS.completed, + }, + transaction, + ); return { children, }; }, command.transactional); - if (!result.repeat && !result.retry) { + if (!processResult.repeat && !processResult.retry) { if (this.verboseLoggingEnabled) { this.logger.trace(`Command ${command.name} and ID ${command.id} processed.`); } - result.children.forEach(async (e) => this.add(e, e.delay, false)); + const addPromises = []; + processResult.children.forEach((e) => + addPromises.push(this.add(e, e.delay, false)), + ); + await Promise.all(addPromises); } } catch (e) { - this.logger.error({ - msg: `Failed to process command ${command.name} and ID ${command.id}. ${e}.\n${e.stack}`, - Event_name: constants.ERROR_TYPE.COMMAND_FAILED_ERROR, - }); + if (this.verboseLoggingEnabled) { + this.logger.trace( + `Failed to process command ${command.name} and ID ${command.id}. ${e}.\n${e.stack}`, + ); + } + try { const result = await this._handleError(command, handler, e); if (result && result.commands) { result.commands.forEach((c) => this.add(c, c.delay, true)); } - } catch (e) { - this.logger.warn(`Failed to handle error callback for command ${command.name} and ID ${command.id}`); + } catch (error) { + this.logger.warn( + `Failed to handle error callback for command ${command.name} and ID ${command.id}, error: ${error.message}`, + ); } } } @@ -199,7 +227,7 @@ class CommandExecutor { */ async _process(execFn, transactional) { if (transactional) { - return Models.sequelize.transaction(async (t) => execFn(t)); + return this.repositoryModuleManager.transaction(execFn); } return execFn(null); } @@ -211,7 +239,7 @@ class CommandExecutor { * @private */ async _startDefaultCommand(name) { - await CommandExecutor._delete(name); + await this._delete(name); const handler = this.commandResolver.resolve(name); await this.add(handler.default(), constants.DEFAULT_COMMAND_DELAY_IN_MILLS, true); if (this.verboseLoggingEnabled) { @@ -225,7 +253,9 @@ class CommandExecutor { * @param delay * @param insert */ - async add(command, delay = 0, insert = true) { + async add(addCommand, addDelay = 0, insert = true) { + let command = addCommand; + let delay = addDelay; const now = new Date().getTime() / 1000; if (delay != null && delay > constants.MAX_COMMAND_DELAY_IN_MILLS) { @@ -240,7 +270,13 @@ class CommandExecutor { command = await this._insert(command); } if (delay) { - setTimeout((command) => this.queue.push(command), delay, command); + setTimeout( + (timeoutCommand) => { + this.queue.push(timeoutCommand); + }, + delay, + command, + ); } else { this.queue.push(command); } @@ -250,19 +286,22 @@ class CommandExecutor { * Handles command retry * @param command * @param handler - * @return {Promise} * @private */ - async _handleRetry(command, handler) { - if (command.retries > 0) { + async _handleRetry(retryCommand, handler) { + const command = retryCommand; + if (command.retries > 1) { command.data = handler.pack(command.data); - await CommandExecutor._update(command, { + await this._update(command, { status: STATUS.pending, retries: command.retries - 1, }); - await this.add(command, command.delay ? command.delay : 0, false); + const period = command.period ? command.period : 0; + const delay = command.delay ? command.delay : 0; + await this.add(command, period + delay, false); return Command.retry(); } + await handler.retryFinished(command); return Command.empty(); } @@ -276,16 +315,17 @@ class CommandExecutor { */ async _handleError(command, handler, err) { if (command.retries > 0) { - await CommandExecutor._update(command, { + await this._update(command, { retries: command.retries - 1, }); await this.add(command, command.delay ? command.delay : 0, false); } else { try { - await CommandExecutor._update(command, { + await this._update(command, { status: STATUS.failed, message: err.message, }); + this.logger.warn(`Error in command: ${command.name}, error: ${err.message}`); return await handler.recover(command, err); } catch (e) { this.logger.warn(`Failed to recover command ${command.name} and ID ${command.id}`); @@ -300,7 +340,8 @@ class CommandExecutor { * @return {Promise} * @private */ - async _insert(command, transaction) { + async _insert(insertCommand, transaction = null) { + const command = insertCommand; if (!command.name) { [command.name] = command.sequence; command.sequence = command.sequence.slice(1); @@ -319,12 +360,11 @@ class CommandExecutor { command.data = commandInstance.pack(command.data); } command.status = STATUS.pending; - const opts = { - }; + const opts = {}; if (transaction != null) { opts.transaction = transaction; } - const model = await Models.commands.create(command, opts); + const model = await this.repositoryModuleManager.createCommand(command, opts); command.id = model.dataValues.id; return command; } @@ -335,12 +375,8 @@ class CommandExecutor { * @returns {Promise} * @private */ - static async _delete(name) { - await Models.commands.destroy({ - where: { - name: { [Models.Sequelize.Op.eq]: name }, - }, - }); + async _delete(name) { + await this.repositoryModuleManager.destroyCommand(name); } /** @@ -351,7 +387,7 @@ class CommandExecutor { * @return {Promise} * @private */ - static async _update(command, update, transaction) { + async _update(command, update, transaction = null) { Object.assign(command, update); const opts = { returning: true, @@ -362,10 +398,7 @@ class CommandExecutor { if (transaction) { opts.transaction = transaction; } - await Models.commands.update( - update, - opts, - ); + await this.repositoryModuleManager.updateCommand(update, opts); } /** @@ -374,31 +407,22 @@ class CommandExecutor { */ async replay() { // Wait for 1 minute for node to establish connections - await new Promise((resolve) => setTimeout(resolve, 1 * 60 * 1000)); + // await new Promise((resolve) => setTimeout(resolve, 1 * 60 * 1000)); this.logger.info('Replay pending/started commands from the database...'); - const pendingCommands = (await Models.commands.findAll({ - where: { - status: { - [Models.Sequelize.Op.in]: [ - STATUS.pending, - STATUS.started, - STATUS.repeating], - }, - name: { [Models.Sequelize.Op.notIn]: ['cleanerCommand', 'autoupdaterCommand'] }, - }, - })).filter((command) => !constants.PERMANENT_COMMANDS.includes(command.name)); + const pendingCommands = ( + await this.repositoryModuleManager.getCommandsWithStatus( + [STATUS.pending, STATUS.started, STATUS.repeating], + ['cleanerCommand', 'autoupdaterCommand'], + ) + ).filter((command) => !constants.PERMANENT_COMMANDS.includes(command.name)); // TODO consider JOIN instead const commands = pendingCommands.filter(async (pc) => { if (!pc.parent_id) { return true; } - const parent = await Models.commands.findOne({ - where: { - id: pc.parent_id, - }, - }); + const parent = await this.repositoryModuleManager.getCommandWithId(pc.parent_id); return !parent || parent.status === 'COMPLETED'; }); diff --git a/modules/command/command-resolver.js b/src/commands/command-resolver.js similarity index 100% rename from modules/command/command-resolver.js rename to src/commands/command-resolver.js diff --git a/modules/command/command.js b/src/commands/command.js similarity index 75% rename from modules/command/command.js rename to src/commands/command.js index 116b64e35..ea538aac5 100644 --- a/modules/command/command.js +++ b/src/commands/command.js @@ -1,19 +1,20 @@ -const Models = require('../../models/index'); +const { OPERATION_ID_STATUS } = require('../constants/constants'); /** * Describes one command handler */ class Command { constructor(ctx) { + this.config = ctx.config; + this.logger = ctx.logger; this.commandResolver = ctx.commandResolver; + this.operationIdService = ctx.operationIdService; } /** * Executes command and produces one or more events - * @param command - Command object - * @param [transaction] - Optional database transaction */ - async execute(command, transaction) { + async execute() { return Command.empty(); } @@ -23,14 +24,16 @@ class Command { * @param err */ async recover(command, err) { + const { operationId } = command.data; + await this.handleError(operationId, err.message, this.errorType, true, command.data); + return Command.empty(); } /** * Execute strategy when event is too late - * @param command */ - async expired(command) { + async expired() { return Command.empty(); } @@ -61,7 +64,7 @@ class Command { return Command.empty(); } const [name] = sequence; - sequence = sequence.slice(1); + const newSequence = sequence.slice(1); const handler = this.commandResolver.resolve(name); const command = handler.default(); @@ -69,7 +72,7 @@ class Command { const commandData = command.data ? command.data : {}; Object.assign(command, { data: Object.assign(commandData, data), - sequence, + sequence: newSequence, }); if (opts) { Object.assign(command, opts); @@ -100,44 +103,36 @@ class Command { return command; } + async retryFinished(command) { + this.logger.trace(`Retry count for command: ${command.name} reached!`); + } + /** * Error handler for command - * @param handlerId - Operation handler id + * @param operationId - Operation operation id * @param error - Error object * @param errorName - Name of error * @param markFailed - Update operation status to failed * @returns {*} */ - async handleError(handlerId, error, errorName, markFailed) { - this.logger.error({ - msg: `Command error (${errorName}): ${error.message}`, - Event_name: errorName, - Event_value1: error.message, - Id_operation: handlerId, - }); + async handleError(operationId, errorMessage, errorName, markFailed) { + this.logger.error(`Command error (${errorName}): ${errorMessage}`); if (markFailed) { - await Models.handler_ids.update( - { - data: JSON.stringify({ message: error.message }), - status: 'FAILED', - }, - { - where: { - handler_id: handlerId, - }, - }, + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.FAILED, + errorMessage, + errorName, ); } } /** * Builds default command - * @param map * @returns {{add, data: *, delay: *, deadline: *}} */ - default(map) { - return { - }; + default() { + return {}; } /** diff --git a/modules/command/common/otnode-update-command.js b/src/commands/common/otnode-update-command.js similarity index 84% rename from modules/command/common/otnode-update-command.js rename to src/commands/common/otnode-update-command.js index 423131db4..3640d57b1 100644 --- a/modules/command/common/otnode-update-command.js +++ b/src/commands/common/otnode-update-command.js @@ -1,7 +1,5 @@ const semver = require('semver'); -const fs = require('fs-extra'); const Command = require('../command'); -const constants = require('../../constants'); class OtnodeUpdateCommand extends Command { constructor(ctx) { @@ -40,8 +38,12 @@ class OtnodeUpdateCommand extends Command { const success = await this.autoUpdaterModuleManager.update(); if (success) { - const updateFilePath = this.fileService.getUpdateFilePath(); - await fs.promises.writeFile(updateFilePath, 'UPDATED'); + const updateFolderPath = this.fileService.getDataFolderPath(); + await this.fileService.writeContentsToFile( + updateFolderPath, + 'UPDATED', + 'UPDATED', + ); this.logger.info('Node will now restart!'); process.exit(1); } @@ -58,15 +60,11 @@ class OtnodeUpdateCommand extends Command { async recover(command, err) { await this.handleError(err); - return Command.retry(); + return Command.repeat(); } async handleError(error) { - this.logger.error({ - msg: `Error in update command: ${error}. ${error.stack}`, - Event_name: constants.ERROR_TYPE.CHECKING_UPDATE_ERROR, - Event_value1: error.message, - }); + this.logger.error(`Error in update command: ${error}. ${error.stack}`); } /** diff --git a/src/commands/common/send-telemetry-command.js b/src/commands/common/send-telemetry-command.js new file mode 100644 index 000000000..2b4fd4ecf --- /dev/null +++ b/src/commands/common/send-telemetry-command.js @@ -0,0 +1,80 @@ +const axios = require('axios'); +const Command = require('../command'); +const pjson = require('../../../package.json'); + +class SendTelemetryCommand extends Command { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.config = ctx.config; + this.telemetryInjectionService = ctx.telemetryInjectionService; + this.networkModuleManager = ctx.networkModuleManager; + } + + /** + * Performs code update by fetching new code from github repo + * @param command + */ + async execute() { + if (!this.config.telemetry.enabled || !this.config.telemetry.sendTelemetryData) { + return Command.empty(); + } + try { + const events = await this.telemetryInjectionService.getUnpublishedEvents(); + if (events && events.length > 0) { + const signalingMessage = { + nodeData: { + version: pjson.version, + identity: this.networkModuleManager.getPeerId()._idB58String, + hostname: this.config.hostname, + }, + events, + }; + const config = { + method: 'post', + url: this.config.telemetry.signalingServerUrl, + headers: { + 'Content-Type': 'application/json', + }, + data: JSON.stringify(signalingMessage), + }; + const response = await axios(config); + if (response.status === 200) { + await this.telemetryInjectionService.removePublishedEvents(events); + } + } + } catch (e) { + await this.handleError(e); + } + return Command.repeat(); + } + + async recover(command, err) { + await this.handleError(err); + + return Command.repeat(); + } + + async handleError(error) { + this.logger.error(`Error in send telemetry command: ${error}. ${error.stack}`); + } + + /** + * Builds default otnodeUpdateCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'sendTelemetryCommand', + delay: 0, + data: {}, + period: 15 * 60 * 1000, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = SendTelemetryCommand; diff --git a/src/commands/protocols/common/find-nodes-command.js b/src/commands/protocols/common/find-nodes-command.js new file mode 100644 index 000000000..ff735040a --- /dev/null +++ b/src/commands/protocols/common/find-nodes-command.js @@ -0,0 +1,73 @@ +const Command = require('../../command'); +const { OPERATION_ID_STATUS, NETWORK_PROTOCOLS } = require('../../../constants/constants'); + +class FindNodesCommand extends Command { + constructor(ctx) { + super(ctx); + this.networkModuleManager = ctx.networkModuleManager; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { keyword, operationId, networkProtocol, errorType } = command.data; + + this.errorType = errorType; + this.logger.debug(`Searching for closest node(s) for keyword ${keyword}`); + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.FIND_NODES_START, + ); + + const closestNodes = await this.networkModuleManager.findNodes(keyword, networkProtocol); + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.FIND_NODES_END, + ); + + this.logger.debug(`Found ${closestNodes.length} node(s) for keyword ${keyword}`); + + if ( + networkProtocol === NETWORK_PROTOCOLS.PUBLISH && + closestNodes.length < this.config.minimumReplicationFactor + ) { + this.handleError( + operationId, + `Unable to find enough nodes for ${networkProtocol}. Minimum replication factor: ${this.config.minimumReplicationFactor}`, + this.errorType, + true, + ); + return Command.empty(); + } + + return this.continueSequence( + { + ...command.data, + leftoverNodes: closestNodes, + numberOfFoundNodes: closestNodes.length, + }, + command.sequence, + ); + } + + /** + * Builds default findNodesCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'findNodesCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = FindNodesCommand; diff --git a/src/commands/protocols/common/handle-protocol-message-command.js b/src/commands/protocols/common/handle-protocol-message-command.js new file mode 100644 index 000000000..61fd71db2 --- /dev/null +++ b/src/commands/protocols/common/handle-protocol-message-command.js @@ -0,0 +1,57 @@ +const Command = require('../../command'); + +const { NETWORK_MESSAGE_TYPES } = require('../../../constants/constants'); + +class HandleProtocolMessageCommand extends Command { + constructor(ctx) { + super(ctx); + this.config = ctx.config; + this.networkModuleManager = ctx.networkModuleManager; + this.operationIdService = ctx.operationIdService; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { remotePeerId, operationId, keywordUuid } = command.data; + + try { + const { messageType, messageData } = await this.prepareMessage(command.data); + await this.networkModuleManager.sendMessageResponse( + this.operationService.getNetworkProtocol(), + remotePeerId, + messageType, + operationId, + keywordUuid, + messageData, + ); + } catch (error) { + if (command.retries) return Command.retry(); + await this.handleError(error.message, command); + } + + return Command.empty(); + } + + async prepareMessage() { + // overridden by subclasses + } + + async handleError(errorMessage, command) { + const { operationId, remotePeerId, keywordUuid } = command.data; + + await super.handleError(operationId, errorMessage, this.errorType, true); + await this.networkModuleManager.sendMessageResponse( + this.operationService.getNetworkProtocol(), + remotePeerId, + NETWORK_MESSAGE_TYPES.RESPONSES.NACK, + operationId, + keywordUuid, + {}, + ); + } +} + +module.exports = HandleProtocolMessageCommand; diff --git a/src/commands/protocols/common/network-protocol-command.js b/src/commands/protocols/common/network-protocol-command.js new file mode 100644 index 000000000..3762ed97b --- /dev/null +++ b/src/commands/protocols/common/network-protocol-command.js @@ -0,0 +1,70 @@ +const Command = require('../../command'); + +class NetworkProtocolCommand extends Command { + constructor(ctx) { + super(ctx); + this.config = ctx.config; + this.logger = ctx.logger; + this.commandExecutor = ctx.commandExecutor; + this.operationService = ctx.publishService; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { operationId } = command.data; + const keywords = this.getKeywords(command); + const commandSequence = [ + 'findNodesCommand', + `${this.operationService.getOperationName()}ScheduleMessagesCommand`, + ]; + + const addCommandPromises = keywords.map((keyword) => + this.commandExecutor.add({ + name: commandSequence[0], + sequence: commandSequence.slice(1), + delay: 0, + data: { + ...this.getNextCommandData(command), + keyword, + operationId, + errorType: this.errorType, + networkProtocol: this.operationService.getNetworkProtocol(), + }, + transactional: false, + }), + ); + + await Promise.all(addCommandPromises); + + return Command.empty(); + } + + getKeywords() { + // overridden by subclasses + return []; + } + + getNextCommandData() { + // overridden by subclasses + } + + /** + * Builds default protocolNetworkCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'protocolNetworkCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = NetworkProtocolCommand; diff --git a/src/commands/protocols/common/protocol-init-command.js b/src/commands/protocols/common/protocol-init-command.js new file mode 100644 index 000000000..521beadad --- /dev/null +++ b/src/commands/protocols/common/protocol-init-command.js @@ -0,0 +1,13 @@ +const ProtocolMessageCommand = require('./protocol-message-command'); +const { NETWORK_MESSAGE_TYPES } = require('../../../constants/constants'); + +class ProtocolInitCommand extends ProtocolMessageCommand { + async execute(command) { + return this.executeProtocolMessageCommand( + command, + NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_INIT, + ); + } +} + +module.exports = ProtocolInitCommand; diff --git a/src/commands/protocols/common/protocol-message-command.js b/src/commands/protocols/common/protocol-message-command.js new file mode 100644 index 000000000..c461cccf3 --- /dev/null +++ b/src/commands/protocols/common/protocol-message-command.js @@ -0,0 +1,109 @@ +const Command = require('../../command'); +const { NETWORK_MESSAGE_TYPES } = require('../../../constants/constants'); + +class ProtocolMessageCommand extends Command { + constructor(ctx) { + super(ctx); + this.networkModuleManager = ctx.networkModuleManager; + this.repositoryModuleManager = ctx.repositoryModuleManager; + } + + async executeProtocolMessageCommand(command, messageType) { + if (!(await this.shouldSendMessage(command))) { + return Command.empty(); + } + const message = await this.prepareMessage(command); + + return this.sendProtocolMessage(command, message, messageType); + } + + async shouldSendMessage(command) { + const { operationId } = command.data; + + const operation = await this.repositoryModuleManager.getOperationStatus( + this.operationService.getOperationName(), + operationId, + ); + + if (operation.status === this.operationService.getOperationStatus().IN_PROGRESS) { + return true; + } + this.logger.trace( + `${command.name} skipped for operationId: ${operationId} with status ${operation.status}`, + ); + + return false; + } + + // eslint-disable-next-line no-unused-vars + async prepareMessage(command) { + // overridden by store-init-command, get-init-command, search-init-command, + // store-request-command, get-request-command, search-request-command + } + + async sendProtocolMessage(command, message, messageType) { + const { node, operationId, keyword } = command.data; + + const response = await this.networkModuleManager.sendMessage( + this.operationService.getNetworkProtocol(), + node, + messageType, + operationId, + keyword, + message, + ); + switch (response.header.messageType) { + case NETWORK_MESSAGE_TYPES.RESPONSES.BUSY: + return this.handleBusy(command, response.data); + case NETWORK_MESSAGE_TYPES.RESPONSES.NACK: + return this.handleNack(command, response.data); + case NETWORK_MESSAGE_TYPES.RESPONSES.ACK: + return this.handleAck(command, response.data); + default: + await this.markResponseAsFailed( + command, + `Received unknown message type from node during ${command.name}`, + ); + return Command.empty(); + } + } + + async handleAck(command) { + return this.continueSequence(command.data, command.sequence); + } + + async handleBusy() { + return Command.retry(); + } + + async handleNack(command) { + await this.markResponseAsFailed( + command, + `Received NACK response from node during ${command.name}`, + ); + return Command.empty(); + } + + async recover(command, err) { + await this.markResponseAsFailed(command, err.message); + return Command.empty(); + } + + async markResponseAsFailed(command, errorMessage) { + await this.operationService.processResponse( + command, + this.operationService.getOperationRequestStatus().FAILED, + null, + errorMessage, + ); + } + + async retryFinished(command) { + await this.markResponseAsFailed( + command, + `Max number of retries for protocol message ${command.name} reached`, + ); + } +} + +module.exports = ProtocolMessageCommand; diff --git a/src/commands/protocols/common/protocol-request-command.js b/src/commands/protocols/common/protocol-request-command.js new file mode 100644 index 000000000..2dc23c4a9 --- /dev/null +++ b/src/commands/protocols/common/protocol-request-command.js @@ -0,0 +1,23 @@ +const Command = require('../../command'); +const ProtocolMessageCommand = require('./protocol-message-command'); +const { NETWORK_MESSAGE_TYPES } = require('../../../constants/constants'); + +class ProtocolRequestCommand extends ProtocolMessageCommand { + async execute(command) { + return this.executeProtocolMessageCommand( + command, + NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_REQUEST, + ); + } + + async handleAck(command, responseData) { + await this.operationService.processResponse( + command, + this.operationService.getOperationRequestStatus().COMPLETED, + responseData, + ); + return Command.empty(); + } +} + +module.exports = ProtocolRequestCommand; diff --git a/src/commands/protocols/common/protocol-schedule-messages-command.js b/src/commands/protocols/common/protocol-schedule-messages-command.js new file mode 100644 index 000000000..112c1458b --- /dev/null +++ b/src/commands/protocols/common/protocol-schedule-messages-command.js @@ -0,0 +1,78 @@ +const Command = require('../../command'); + +class ProtocolScheduleMessagesCommand extends Command { + constructor(ctx) { + super(ctx); + this.commandExecutor = ctx.commandExecutor; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { operationId, keyword, leftoverNodes, numberOfFoundNodes } = command.data; + + const currentBatchNodes = leftoverNodes.slice(0, this.config.minimumReplicationFactor); + const currentBatchLeftoverNodes = + this.config.minimumReplicationFactor < leftoverNodes.length + ? leftoverNodes.slice(this.config.minimumReplicationFactor) + : []; + + await this.operationIdService.updateOperationIdStatus(operationId, this.startEvent); + + const commandSequence = [ + `${this.operationService.getOperationName()}InitCommand`, + `${this.operationService.getOperationName()}RequestCommand`, + ]; + + this.logger.debug( + `Trying to ${this.operationService.getOperationName()} to batch of ${ + currentBatchNodes.length + } nodes for keyword : ${keyword}, leftover for retry: ${ + currentBatchLeftoverNodes.length + }`, + ); + + const addCommandPromises = currentBatchNodes.map((node) => + this.commandExecutor.add({ + name: commandSequence[0], + sequence: commandSequence.slice(1), + delay: 0, + data: { + ...this.getNextCommandData(command), + operationId, + keyword, + node, + numberOfFoundNodes, + numberOfNodesInBatch: currentBatchNodes.length, + leftoverNodes: currentBatchLeftoverNodes, + }, + period: 5000, + retries: 3, + transactional: false, + }), + ); + + await Promise.all(addCommandPromises); + + return Command.empty(); + } + + /** + * Builds default protocolScheduleMessagesCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'protocolScheduleMessagesCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = ProtocolScheduleMessagesCommand; diff --git a/src/commands/protocols/get/receiver/handle-get-init-command.js b/src/commands/protocols/get/receiver/handle-get-init-command.js new file mode 100644 index 000000000..fd6c0f85f --- /dev/null +++ b/src/commands/protocols/get/receiver/handle-get-init-command.js @@ -0,0 +1,53 @@ +const HandleProtocolMessageCommand = require('../../common/handle-protocol-message-command'); +const { + ERROR_TYPE, + NETWORK_MESSAGE_TYPES, + OPERATION_ID_STATUS, +} = require('../../../../constants/constants'); + +class HandleGetInitCommand extends HandleProtocolMessageCommand { + constructor(ctx) { + super(ctx); + this.tripleStoreModuleManager = ctx.tripleStoreModuleManager; + this.operationService = ctx.getService; + + this.errorType = ERROR_TYPE.GET.GET_INIT_REMOTE_ERROR; + } + + async prepareMessage(commandData) { + const { assertionId, operationId } = commandData; + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.ASSERTION_EXISTS_LOCAL_START, + ); + + const assertionExists = await this.tripleStoreModuleManager.assertionExists(assertionId); + const messageType = assertionExists + ? NETWORK_MESSAGE_TYPES.RESPONSES.ACK + : NETWORK_MESSAGE_TYPES.RESPONSES.NACK; + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.ASSERTION_EXISTS_LOCAL_END, + ); + + return { messageType, messageData: {} }; + } + + /** + * Builds default handleGetInitCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'handleGetInitCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = HandleGetInitCommand; diff --git a/src/commands/protocols/get/receiver/handle-get-request-command.js b/src/commands/protocols/get/receiver/handle-get-request-command.js new file mode 100644 index 000000000..b05cc3dca --- /dev/null +++ b/src/commands/protocols/get/receiver/handle-get-request-command.js @@ -0,0 +1,55 @@ +const HandleProtocolMessageCommand = require('../../common/handle-protocol-message-command'); +const { + ERROR_TYPE, + NETWORK_MESSAGE_TYPES, + OPERATION_ID_STATUS, +} = require('../../../../constants/constants'); + +class HandleGetRequestCommand extends HandleProtocolMessageCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.getService; + + this.errorType = ERROR_TYPE.GET.GET_REQUEST_REMOTE_ERROR; + } + + async prepareMessage(commandData) { + const { assertionId, operationId } = commandData; + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.GET_REMOTE_START, + ); + + // TODO: validate assertionId / ual + + const nquads = await this.operationService.localGet(assertionId, operationId); + + const messageType = nquads.length + ? NETWORK_MESSAGE_TYPES.RESPONSES.ACK + : NETWORK_MESSAGE_TYPES.RESPONSES.NACK; + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.GET_REMOTE_END, + ); + + return { messageType, messageData: { nquads } }; + } + + /** + * Builds default handleGetRequestCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'handleGetRequestCommand', + delay: 0, + transactional: false, + errorType: ERROR_TYPE.HANDLE_GET_REQUEST_ERROR, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = HandleGetRequestCommand; diff --git a/src/commands/protocols/get/sender/get-init-command.js b/src/commands/protocols/get/sender/get-init-command.js new file mode 100644 index 000000000..0d572ab7b --- /dev/null +++ b/src/commands/protocols/get/sender/get-init-command.js @@ -0,0 +1,36 @@ +const ProtocolInitCommand = require('../../common/protocol-init-command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); + +class GetInitCommand extends ProtocolInitCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.getService; + this.repositoryModuleManager = ctx.repositoryModuleManager; + + this.errorType = ERROR_TYPE.GET.GET_INIT_ERROR; + } + + async prepareMessage(command) { + const { assertionId } = command.data; + + return { assertionId }; + } + + /** + * Builds default getInitCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'getInitCommand', + delay: 0, + retries: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = GetInitCommand; diff --git a/src/commands/protocols/get/sender/get-latest-assertion-id-command.js b/src/commands/protocols/get/sender/get-latest-assertion-id-command.js new file mode 100644 index 000000000..0f223e47d --- /dev/null +++ b/src/commands/protocols/get/sender/get-latest-assertion-id-command.js @@ -0,0 +1,82 @@ +const Command = require('../../../command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); + +class GetLatestAssertionIdCommand extends Command { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.config = ctx.config; + this.blockchainModuleManager = ctx.blockchainModuleManager; + this.ualService = ctx.ualService; + + this.errorType = ERROR_TYPE.GET.GET_ASSERTION_ID_ERROR; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { id, operationId } = command.data; + + // id options : + // did:otp:0x174714134abcd13431413413/987654321/41eaa20f35f709d9c22281f46d895b2f7a83c54587e4339456e0d9f4e5bd9b8f + // did:otp:0x174714134abcd13431413413/987654321/latest + // 41eaa20f35f709d9c22281f46d895b2f7a83c54587e4339456e0d9f4e5bd9b8f + + let assertionId = ''; + if (!this.ualService.isUAL(id)) { + assertionId = id; + } else { + const { + blockchain, + contract, + tokenId, + assertionId: ualAssertionId, + } = this.ualService.resolveUAL(id); + + if (ualAssertionId && ualAssertionId !== 'latest') { + assertionId = ualAssertionId; + } else { + this.logger.debug( + `Searching for assertion id on ${blockchain} on contract: ${contract} with tokenId: ${tokenId}`, + ); + const blockchainAssertionId = + await this.blockchainModuleManager.getLatestCommitHash( + blockchain, + contract, + tokenId, + ); + if (!blockchainAssertionId) { + this.handleError( + operationId, + `Unable to find assertion id on ${blockchain} on contract: ${contract} with tokenId: ${tokenId}`, + this.errorType, + true, + ); + return Command.empty(); + } + assertionId = blockchainAssertionId; + } + } + + return this.continueSequence({ ...command.data, assertionId }, command.sequence); + } + + /** + * Builds default getLatestAssertionIdCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'getLatestAssertionIdCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = GetLatestAssertionIdCommand; diff --git a/src/commands/protocols/get/sender/get-request-command.js b/src/commands/protocols/get/sender/get-request-command.js new file mode 100644 index 000000000..07bf24006 --- /dev/null +++ b/src/commands/protocols/get/sender/get-request-command.js @@ -0,0 +1,35 @@ +const ProtocolRequestCommand = require('../../common/protocol-request-command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); + +class GetRequestCommand extends ProtocolRequestCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.getService; + + this.errorType = ERROR_TYPE.GET.GET_REQUEST_ERROR; + } + + async prepareMessage(command) { + const { assertionId } = command.data; + + return { assertionId }; + } + + /** + * Builds default getRequest + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'getRequestCommand', + delay: 0, + retries: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = GetRequestCommand; diff --git a/src/commands/protocols/get/sender/get-schedule-messages-command.js b/src/commands/protocols/get/sender/get-schedule-messages-command.js new file mode 100644 index 000000000..696aa0670 --- /dev/null +++ b/src/commands/protocols/get/sender/get-schedule-messages-command.js @@ -0,0 +1,37 @@ +const ProtocolScheduleMessagesCommand = require('../../common/protocol-schedule-messages-command'); +const { OPERATION_ID_STATUS, ERROR_TYPE } = require('../../../../constants/constants'); + +class GetScheduleMessagesCommand extends ProtocolScheduleMessagesCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.getService; + + this.errorType = ERROR_TYPE.GET.GET_START_ERROR; + this.startEvent = OPERATION_ID_STATUS.GET.GET_FETCH_FROM_NODES_START; + } + + getNextCommandData(command) { + const { ual, assertionId } = command.data; + return { + ual, + assertionId, + }; + } + + /** + * Builds default getScheduleMessagesCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'getScheduleMessagesCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = GetScheduleMessagesCommand; diff --git a/src/commands/protocols/get/sender/local-get-command.js b/src/commands/protocols/get/sender/local-get-command.js new file mode 100644 index 000000000..198b319ec --- /dev/null +++ b/src/commands/protocols/get/sender/local-get-command.js @@ -0,0 +1,72 @@ +const Command = require('../../../command'); +const { OPERATION_ID_STATUS, ERROR_TYPE } = require('../../../../constants/constants'); + +class LocalGetCommand extends Command { + constructor(ctx) { + super(ctx); + this.config = ctx.config; + this.operationIdService = ctx.operationIdService; + this.tripleStoreModuleManager = ctx.tripleStoreModuleManager; + this.getService = ctx.getService; + + this.errorType = ERROR_TYPE.GET.GET_LOCAL_ERROR; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { operationId, assertionId } = command.data; + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.GET_LOCAL_START, + ); + const assertionExists = await this.tripleStoreModuleManager.assertionExists(assertionId); + if (assertionExists) { + const nquads = await this.getService.localGet(assertionId, operationId); + + if (nquads.length) { + await this.operationIdService.cacheOperationIdData(operationId, nquads); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.GET_LOCAL_END, + ); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.GET_END, + ); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.COMPLETED, + ); + + return Command.empty(); + } + } + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.GET_LOCAL_END, + ); + + return this.continueSequence(command.data, command.sequence); + } + + /** + * Builds default localGetCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'localGetCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = LocalGetCommand; diff --git a/src/commands/protocols/get/sender/network-get-command.js b/src/commands/protocols/get/sender/network-get-command.js new file mode 100644 index 000000000..c85f5e059 --- /dev/null +++ b/src/commands/protocols/get/sender/network-get-command.js @@ -0,0 +1,40 @@ +const NetworkProtocolCommand = require('../../common/network-protocol-command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); + +class NetworkGetCommand extends NetworkProtocolCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.getService; + + this.errorType = ERROR_TYPE.GET.GET_NETWORK_ERROR; + } + + getKeywords(command) { + const { assertionId } = command.data; + return [assertionId]; + } + + getNextCommandData(command) { + const { assertionId } = command.data; + return { + assertionId, + }; + } + + /** + * Builds default networkGetCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'networkGetCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = NetworkGetCommand; diff --git a/src/commands/protocols/publish/receiver/answer-challenge-command.js b/src/commands/protocols/publish/receiver/answer-challenge-command.js new file mode 100644 index 000000000..0a69c5063 --- /dev/null +++ b/src/commands/protocols/publish/receiver/answer-challenge-command.js @@ -0,0 +1,81 @@ +// const Command = require('../../command'); +// const constants = require('../../../constants/constants'); +// +// class AnswerChallengeCommand extends Command { +// constructor(ctx) { +// super(ctx); +// this.logger = ctx.logger; +// this.config = ctx.config; +// this.networkModuleManager = ctx.networkModuleManager; +// this.blockchainModuleManager = ctx.blockchainModuleManager; +// this.validationModuleManager = ctx.validationModuleManager; +// this.dataService = ctx.dataService; +// this.publishService = ctx.publishService; +// this.commandExecutor = ctx.commandExecutor; +// this.ualService = ctx.ualService; +// } +// +// /** +// * Executes command and produces one or more events +// * @param command +// */ +// async execute(command) { +// const { +// handlerId, +// epoch, +// blockchain, +// tokenId +// } = command.data; +// +// +// // await this.handlerIdService.updateHandlerIdStatus( +// // handlerId, +// // HANDLER_ID_STATUS.PUBLISH.PUBLISH_REPLICATE_START, +// // ); +// +// try { +// const {data, metadata} = await this.handlerIdService.getCachedHandlerIdData(handlerId); +// +// const challenge = await this.blockchainModuleManager.getChallenge(blockchain, tokenId, epoch); +// +// const nquadsArray = data.concat(metadata) +// const {proof, leaf} = this.validationModuleManager.getMerkleProof(nquadsArray, challenge); +// await this.blockchainModuleManager.answerChallenge(blockchain, tokenId, epoch, proof, leaf, 0); +// if (epoch > 0) { +// await this.blockchainModuleManager.getReward(blockchain, tokenId, epoch); +// } +// }catch(e) { +// console.log(e); +// } +// +// return Command.empty(); +// } +// +// async handleError(handlerId, errorMessage, errorName, markFailed, commandData) { +// await this.publishService.handleReceiverCommandError( +// handlerId, +// errorMessage, +// errorName, +// markFailed, +// commandData, +// ); +// return Command.empty(); +// } +// +// /** +// * Builds default handleStoreRequestCommand +// * @param map +// * @returns {{add, data: *, delay: *, deadline: *}} +// */ +// default(map) { +// const command = { +// name: 'answerChallengeCommand', +// delay: 0, +// transactional: false, +// }; +// Object.assign(command, map); +// return command; +// } +// } +// +// module.exports = AnswerChallengeCommand; diff --git a/src/commands/protocols/publish/receiver/handle-store-init-command.js b/src/commands/protocols/publish/receiver/handle-store-init-command.js new file mode 100644 index 000000000..184511173 --- /dev/null +++ b/src/commands/protocols/publish/receiver/handle-store-init-command.js @@ -0,0 +1,63 @@ +const HandleProtocolMessageCommand = require('../../common/handle-protocol-message-command'); +const { + NETWORK_MESSAGE_TYPES, + ERROR_TYPE, + OPERATION_ID_STATUS, +} = require('../../../../constants/constants'); + +class HandleStoreInitCommand extends HandleProtocolMessageCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.publishService; + + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_REMOTE_ERROR; + } + + async prepareMessage(commandData) { + const { operationId, ual } = commandData; + + this.logger.info(`Validating assertion with ual: ${ual}`); + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.VALIDATING_ASSERTION_REMOTE_START, + ); + + const assertionId = await this.operationService.getAssertion(ual, operationId); + + await Promise.all([ + this.operationIdService.cacheOperationIdData(operationId, { assertionId }), + this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.VALIDATING_ASSERTION_REMOTE_END, + ), + ]); + + return { messageType: NETWORK_MESSAGE_TYPES.RESPONSES.ACK, messageData: {} }; + } + + async retryFinished(command) { + const { operationId } = command.data; + this.handleError( + `Retry count for command: ${command.name} reached! Unable to validate data for operation id: ${operationId}`, + command, + ); + } + + /** + * Builds default handleStoreInitCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'handleStoreInitCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = HandleStoreInitCommand; diff --git a/src/commands/protocols/publish/receiver/handle-store-request-command.js b/src/commands/protocols/publish/receiver/handle-store-request-command.js new file mode 100644 index 000000000..8b2f56f46 --- /dev/null +++ b/src/commands/protocols/publish/receiver/handle-store-request-command.js @@ -0,0 +1,92 @@ +const HandleProtocolMessageCommand = require('../../common/handle-protocol-message-command'); +const { + NETWORK_MESSAGE_TYPES, + OPERATION_ID_STATUS, + ERROR_TYPE, +} = require('../../../../constants/constants'); + +class HandleStoreRequestCommand extends HandleProtocolMessageCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.publishService; + + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_LOCAL_STORE_REMOTE_ERROR; + } + + async prepareMessage(commandData) { + const { ual, operationId, assertionId } = commandData; + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.PUBLISH_LOCAL_STORE_START, + ); + const { assertionId: storeInitAssertionId } = + await this.operationIdService.getCachedOperationIdData(operationId); + + if (storeInitAssertionId !== assertionId) { + throw Error( + `Store request assertion id ${assertionId} does not match store init assertion id ${storeInitAssertionId}`, + ); + } + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.VALIDATING_ASSERTION_REMOTE_START, + ); + await this.operationService.validateAssertion(assertionId, operationId); + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.VALIDATING_ASSERTION_REMOTE_END, + ); + + await this.operationService.localStore(ual, assertionId, operationId); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.PUBLISH_LOCAL_STORE_END, + ); + + return { messageType: NETWORK_MESSAGE_TYPES.RESPONSES.ACK, messageData: {} }; + + // const {blockchain, tokenId} = this.ualService.resolveUAL(ual); + // const epochs = await this.blockchainModuleManager.getEpochs(blockchain, tokenId); + // const blockNumber = await this.blockchainModuleManager.getBlockNumber(blockchain); + // const blockTime = await this.blockchainModuleManager.getBlockTime(blockchain); + // const addCommandPromise = []; + // epochs.forEach((epoch) => { + // const commandSequence = ['answerChallengeCommand']; + // addCommandPromise.push( + // this.commandExecutor.add({ + // name: commandSequence[0], + // sequence: commandSequence.slice(1), + // delay: Math.abs((parseInt(epoch, 10)-parseInt(blockNumber, 10))*parseInt(blockTime, 10)), + // data: { + // handlerId, + // epoch, + // tokenId + // }, + // transactional: false, + // }), + // ); + // }); + // + // await Promise.all(addCommandPromise); + } + + /** + * Builds default handleStoreRequestCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'handleStoreRequestCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = HandleStoreRequestCommand; diff --git a/src/commands/protocols/publish/sender/insert-assertion-command.js b/src/commands/protocols/publish/sender/insert-assertion-command.js new file mode 100644 index 000000000..a1acb4701 --- /dev/null +++ b/src/commands/protocols/publish/sender/insert-assertion-command.js @@ -0,0 +1,56 @@ +const Command = require('../../../command'); +const { OPERATION_ID_STATUS, ERROR_TYPE } = require('../../../../constants/constants'); + +class InsertAssertionCommand extends Command { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.tripleStoreModuleManager = ctx.tripleStoreModuleManager; + this.fileService = ctx.fileService; + this.operationIdService = ctx.operationIdService; + + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_LOCAL_STORE_ERROR; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { operationId, ual, assertionId } = command.data; + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.PUBLISH_LOCAL_STORE_START, + ); + try { + await this.operationService.localStore(ual, assertionId, operationId); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.PUBLISH_LOCAL_STORE_END, + ); + + return this.continueSequence(command.data, command.sequence); + } catch (error) { + this.handleError(operationId, error.message, this.errorType, true); + return Command.empty(); + } + } + + /** + * Builds default insertAssertionCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'insertAssertionCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = InsertAssertionCommand; diff --git a/src/commands/protocols/publish/sender/network-publish-command.js b/src/commands/protocols/publish/sender/network-publish-command.js new file mode 100644 index 000000000..49e01e4df --- /dev/null +++ b/src/commands/protocols/publish/sender/network-publish-command.js @@ -0,0 +1,41 @@ +const NetworkProtocolCommand = require('../../common/network-protocol-command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); + +class NetworkPublishCommand extends NetworkProtocolCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.publishService; + + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_START_ERROR; + } + + getKeywords(command) { + const { assertionId } = command.data; + return [assertionId]; + } + + getNextCommandData(command) { + const { assertionId, ual } = command.data; + return { + assertionId, + ual, + }; + } + + /** + * Builds default networkPublishCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'networkPublishCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = NetworkPublishCommand; diff --git a/src/commands/protocols/publish/sender/publish-init-command.js b/src/commands/protocols/publish/sender/publish-init-command.js new file mode 100644 index 000000000..1840b8737 --- /dev/null +++ b/src/commands/protocols/publish/sender/publish-init-command.js @@ -0,0 +1,38 @@ +const ProtocolInitCommand = require('../../common/protocol-init-command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); + +class PublishInitCommand extends ProtocolInitCommand { + constructor(ctx) { + super(ctx); + + this.repositoryModuleManager = ctx.repositoryModuleManager; + this.operationService = ctx.publishService; + + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_STORE_INIT_ERROR; + } + + async prepareMessage(command) { + const { assertionId, ual } = command.data; + + return { assertionId, ual }; + } + + /** + * Builds default publishInitCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'publishInitCommand', + delay: 0, + period: 5000, + retries: 3, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = PublishInitCommand; diff --git a/src/commands/protocols/publish/sender/publish-request-command.js b/src/commands/protocols/publish/sender/publish-request-command.js new file mode 100644 index 000000000..1ce951146 --- /dev/null +++ b/src/commands/protocols/publish/sender/publish-request-command.js @@ -0,0 +1,40 @@ +const ProtocolRequestCommand = require('../../common/protocol-request-command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); + +class PublishRequestCommand extends ProtocolRequestCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.publishService; + this.repositoryModuleManager = ctx.repositoryModuleManager; + + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_STORE_REQUEST_ERROR; + } + + async prepareMessage(command) { + const { operationId, assertionId, ual } = command.data; + const { assertion } = await this.operationIdService.getCachedOperationIdData(operationId); + + return { + assertion, + assertionId, + ual, + }; + } + + /** + * Builds default storeRequestCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'publishRequestCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = PublishRequestCommand; diff --git a/src/commands/protocols/publish/sender/publish-schedule-messages-command.js b/src/commands/protocols/publish/sender/publish-schedule-messages-command.js new file mode 100644 index 000000000..d25c729de --- /dev/null +++ b/src/commands/protocols/publish/sender/publish-schedule-messages-command.js @@ -0,0 +1,38 @@ +const ProtocolScheduleMessagesCommand = require('../../common/protocol-schedule-messages-command'); +const { OPERATION_ID_STATUS, ERROR_TYPE } = require('../../../../constants/constants'); + +class PublishScheduleMessagesCommand extends ProtocolScheduleMessagesCommand { + constructor(ctx) { + super(ctx); + this.operationService = ctx.publishService; + + this.startEvent = OPERATION_ID_STATUS.PUBLISH.PUBLISH_REPLICATE_START; + + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_START_ERROR; + } + + getNextCommandData(command) { + const { assertionId, ual } = command.data; + return { + assertionId, + ual, + }; + } + + /** + * Builds default publishScheduleMessagesCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'publishScheduleMessagesCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = PublishScheduleMessagesCommand; diff --git a/src/commands/protocols/publish/sender/validate-assertion-command.js b/src/commands/protocols/publish/sender/validate-assertion-command.js new file mode 100644 index 000000000..7e7df5579 --- /dev/null +++ b/src/commands/protocols/publish/sender/validate-assertion-command.js @@ -0,0 +1,69 @@ +const Command = require('../../../command'); +const { ERROR_TYPE, OPERATION_ID_STATUS } = require('../../../../constants/constants'); + +class ValidateAssertionCommand extends Command { + constructor(ctx) { + super(ctx); + this.operationService = ctx.publishService; + + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_VALIDATE_ASSERTION_ERROR; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { ual, operationId } = command.data; + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.VALIDATING_ASSERTION_START, + ); + try { + const assertionId = await this.operationService.getAssertion(ual, operationId); + await this.operationService.validateAssertion(assertionId, operationId); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.VALIDATING_ASSERTION_END, + ); + + return this.continueSequence( + { ...command.data, assertionId, retry: undefined, period: undefined }, + command.sequence, + ); + } catch (error) { + this.logger.warn( + `Unable to validate blockchain data for ual: ${ual}. Received error: ${error.message}, retrying.`, + ); + return Command.retry(); + } + } + + async retryFinished(command) { + const { ual, operationId } = command.data; + await this.handleError( + operationId, + `Retry count for command: ${command.name} reached! Unable to validate ual: ${ual}`, + this.errorType, + true, + ); + } + + /** + * Builds default prepareAssertionForPublish + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'validateAssertionCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = ValidateAssertionCommand; diff --git a/src/commands/protocols/search/receiver/handle-search-assertions-init-command.js b/src/commands/protocols/search/receiver/handle-search-assertions-init-command.js new file mode 100644 index 000000000..621f78c5b --- /dev/null +++ b/src/commands/protocols/search/receiver/handle-search-assertions-init-command.js @@ -0,0 +1,55 @@ +const Command = require('../../../command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); +const constants = require('../../../../constants/constants'); + +class HandleSearchAssertionsInitCommand extends Command { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.config = ctx.config; + this.commandExecutor = ctx.commandExecutor; + this.networkModuleManager = ctx.networkModuleManager; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { remotePeerId, operationId } = command.data; + + const messageType = constants.NETWORK_MESSAGE_TYPES.RESPONSES.ACK; + const messageData = {}; + await this.networkModuleManager.sendMessageResponse( + constants.NETWORK_PROTOCOLS.SEARCH_ASSERTIONS, + remotePeerId, + messageType, + operationId, + messageData, + ); + + return this.continueSequence(command.data, command.sequence); + } + + handleError(operationId, error, msg) { + this.logger.error(msg); + } + + /** + * Builds default handleSearchAssertionsInitCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'handleSearchAssertionsInitCommand', + delay: 0, + transactional: false, + errorType: ERROR_TYPE.HANDLE_SEARCH_ASSERTIONS_INIT_ERROR, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = HandleSearchAssertionsInitCommand; diff --git a/src/commands/protocols/search/receiver/handle-search-assertions-request-command.js b/src/commands/protocols/search/receiver/handle-search-assertions-request-command.js new file mode 100644 index 000000000..987bcc8ad --- /dev/null +++ b/src/commands/protocols/search/receiver/handle-search-assertions-request-command.js @@ -0,0 +1,62 @@ +const Command = require('../../../command'); +const { ERROR_TYPE } = require('../../../../constants/constants'); +const constants = require('../../../../constants/constants'); + +class HandleSearchAssertionsRequestCommand extends Command { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.config = ctx.config; + this.networkModuleManager = ctx.networkModuleManager; + this.tripleStoreModuleManager = ctx.tripleStoreModuleManager; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { message, remotePeerId, operationId } = command.data; + + const localQuery = true; + const data = await this.tripleStoreModuleManager.findAssertionsByKeyword( + message.data.query, + message.data.options, + localQuery, + ); + + const messageType = constants.NETWORK_MESSAGE_TYPES.RESPONSES.ACK; + const messageData = data.map((assertion) => assertion.assertionId); + await this.networkModuleManager.sendMessageResponse( + constants.NETWORK_PROTOCOLS.SEARCH_ASSERTIONS, + remotePeerId, + messageType, + operationId, + messageData, + ); + + return Command.empty(); + } + + handleError(operationId, error, msg) { + this.logger.error(msg); + } + + /** + * Builds default handleSearchAssertionsRequestCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'handleSearchAssertionsRequestCommand', + delay: 0, + transactional: false, + errorType: ERROR_TYPE.HANDLE_SEARCH_ASSERTIONS_REQUEST_ERROR, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = HandleSearchAssertionsRequestCommand; diff --git a/src/commands/protocols/search/sender/local-search-assertions-command.js b/src/commands/protocols/search/sender/local-search-assertions-command.js new file mode 100644 index 000000000..cc10107c8 --- /dev/null +++ b/src/commands/protocols/search/sender/local-search-assertions-command.js @@ -0,0 +1,69 @@ +const Command = require('../../../command'); +const { OPERATION_ID_STATUS } = require('../../../../constants/constants'); + +class LocalSearchAssertionsCommand extends Command { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.config = ctx.config; + this.networkModuleManager = ctx.networkModuleManager; + this.tripleStoreModuleManager = ctx.tripleStoreModuleManager; + this.operationIdService = ctx.operationIdService; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { operationId, query, options } = command.data; + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.SEARCH_ASSERTIONS.SEARCHING_ASSERTIONS, + ); + + try { + const localQuery = true; + const response = await this.tripleStoreModuleManager.findAssertionsByKeyword( + query, + options, + localQuery, + ); + + const data = {}; + data.assertions = response.map((assertion) => assertion.assertionId); + + await this.operationIdService.cacheOperationIdData(operationId, data); + } catch (e) { + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.FAILED, + e.message, + ); + } + + return this.continueSequence(command.data, command.sequence); + } + + handleError(operationId, error, msg) { + this.logger.error(msg); + } + + /** + * Builds default localSearchAssertionsCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'localSearchAssertionsCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = LocalSearchAssertionsCommand; diff --git a/src/commands/protocols/search/sender/search-assertions-command.js b/src/commands/protocols/search/sender/search-assertions-command.js new file mode 100644 index 000000000..d7533635d --- /dev/null +++ b/src/commands/protocols/search/sender/search-assertions-command.js @@ -0,0 +1,53 @@ +const Command = require('../../../command'); + +class SearchAssertionsCommand extends Command { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.commandExecutor = ctx.commandExecutor; + } + + /** + * Executes command and produces one or more events + * @param command + */ + async execute(command) { + const { nodes, operationId, query, options } = command.data; + + const commandSequence = ['searchAssertionsInitCommand', 'searchAssertionsRequestCommand']; + const addCommandPromise = []; + nodes.forEach((node) => { + addCommandPromise.push( + this.commandExecutor.add({ + name: commandSequence[0], + sequence: commandSequence.slice(1), + delay: 0, + data: { operationId, node, query, options }, + transactional: false, + }), + ); + }); + + await Promise.any(addCommandPromise); + + // todo schedule timeout command + return Command.empty(); + } + + /** + * Builds default searchAssertionsCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'searchAssertionsCommand', + delay: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = SearchAssertionsCommand; diff --git a/src/commands/protocols/search/sender/search-assertions-init-command.js b/src/commands/protocols/search/sender/search-assertions-init-command.js new file mode 100644 index 000000000..9b8f6447d --- /dev/null +++ b/src/commands/protocols/search/sender/search-assertions-init-command.js @@ -0,0 +1,36 @@ +const ProtocolInitCommand = require('../../common/protocol-init-command'); +const { ERROR_TYPE, NETWORK_PROTOCOLS } = require('../../../../constants/constants'); + +class SearchAssertionsInitCommand extends ProtocolInitCommand { + constructor(ctx) { + super(ctx); + + this.errorType = ERROR_TYPE.SEARCH_ASSERTIONS_INIT_ERROR; + this.networkProtocol = NETWORK_PROTOCOLS.SEARCH_ASSERTIONS; + } + + async prepareMessage(command) { + const { query, options } = command.data; + + return { query, options }; + } + + /** + * Builds default searchAssertionsInitCommand + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'searchAssertionsInitCommand', + delay: 0, + period: 5000, + retries: 0, + transactional: false, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = SearchAssertionsInitCommand; diff --git a/src/commands/protocols/search/sender/search-assertions-request-command.js b/src/commands/protocols/search/sender/search-assertions-request-command.js new file mode 100644 index 000000000..f9a306eb5 --- /dev/null +++ b/src/commands/protocols/search/sender/search-assertions-request-command.js @@ -0,0 +1,70 @@ +const ProtocolRequestCommand = require('../../common/protocol-request-command'); +const { + ERROR_TYPE, + NETWORK_PROTOCOLS, + OPERATION_ID_STATUS, +} = require('../../../../constants/constants'); +const Command = require('../../../command'); + +class searchAssertionsRequestCommand extends ProtocolRequestCommand { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.config = ctx.config; + this.operationIdService = ctx.operationIdService; + this.searchService = ctx.searchService; + + this.commandName = 'searchAssertionsRequestCommand'; + this.errorType = ERROR_TYPE.SEARCH_ASSERTIONS_REQUEST_ERROR; + this.networkProtocol = NETWORK_PROTOCOLS.SEARCH_ASSERTIONS; + } + + async prepareMessage(command) { + const { operationId, query, options } = command.data; + + return { + options, + operationId, + query, + }; + } + + async handleAck(command, responseData) { + await this.searchService.processSearchResponse( + command, + responseData, + OPERATION_ID_STATUS.SEARCH_ASSERTIONS.COMPLETED, + ); + return Command.empty(); + } + + async markResponseAsFailed(command, errorMessage) { + await this.searchService.processSearchResponse( + command, + OPERATION_ID_STATUS.SEARCH_ASSERTIONS.FAILED, + errorMessage, + ); + } + + handleError(operationId, error, msg) { + this.logger.error(msg); + } + + /** + * Builds default searchAssertionsRequest + * @param map + * @returns {{add, data: *, delay: *, deadline: *}} + */ + default(map) { + const command = { + name: 'searchAssertionsRequestCommand', + delay: 0, + transactional: false, + errorType: ERROR_TYPE.SEARCH_ASSERTIONS_REQUEST_ERROR, + }; + Object.assign(command, map); + return command; + } +} + +module.exports = searchAssertionsRequestCommand; diff --git a/src/constants/constants.js b/src/constants/constants.js index e69de29bb..da9439f66 100644 --- a/src/constants/constants.js +++ b/src/constants/constants.js @@ -0,0 +1,372 @@ +exports.SCHEMA_CONTEXT = 'http://schema.org/'; + +/** + * @constant {object} PUBLISH_TYPES + * - Different types of publish + */ +exports.PUBLISH_TYPES = { ASSERTION: 'assertion', ASSET: 'asset', INDEX: 'index' }; + +/** + * @constant {number} MIN_NODE_VERSION + * - Required node.js version to run the ot-node + */ +exports.MIN_NODE_VERSION = 16; + +// TODO retrieve from the blockchain +/** + * @constant {number} INIT_STAKE_AMOUNT + * - Initial stake amount for profile creation + */ +exports.INIT_STAKE_AMOUNT = 3000; + +/** + * @constant {object} SERVICE_API_SLOW_DOWN + * - Express slow down configuration constants + */ +exports.SERVICE_API_SLOW_DOWN = { + TIME_WINDOW_MILLS: 1 * 60 * 1000, + DELAY_AFTER_SECONDS: 5, + DELAY_MILLS: 3 * 1000, +}; + +/** + * @constant {object} NETWORK_API_RATE_LIMIT + * - Network (Libp2p) rate limiter configuration constants + */ +exports.NETWORK_API_RATE_LIMIT = { + TIME_WINDOW_MILLS: 1 * 60 * 1000, + MAX_NUMBER: 20, +}; + +/** + * @constant {object} NETWORK_API_SPAM_DETECTION + * - Network (Libp2p) spam detection rate limiter configuration constants + */ +exports.NETWORK_API_SPAM_DETECTION = { + TIME_WINDOW_MILLS: 1 * 60 * 1000, + MAX_NUMBER: 40, +}; + +/** + * @constant {object} NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES + * - Network (Libp2p) black list time window in minutes + */ +exports.NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES = 60; + +/** + * @constant {number} DID_PREFIX + * - DID prefix for graph database + */ +exports.DID_PREFIX = 'did:dkg'; + +/** + * @constant {number} DEFAULT_COMMAND_CLEANUP_TIME_MILLS - Command cleanup interval time + */ +exports.DEFAULT_COMMAND_CLEANUP_TIME_MILLS = 4 * 24 * 60 * 60 * 1000; + +/** + * @constant {number} REMOVE_SESSION_COMMAND_DELAY - Remove session comand delay + */ +exports.REMOVE_SESSION_COMMAND_DELAY = 2 * 60 * 1000; + +/** + * @constant {number} OPERATION_IDS_COMMAND_CLEANUP_TIME_MILLS - + * Export command cleanup interval time 24h + */ +exports.OPERATION_IDS_COMMAND_CLEANUP_TIME_MILLS = 24 * 60 * 60 * 1000; + +/** + * @constant {Array} PERMANENT_COMMANDS - List of all permanent commands + */ +exports.PERMANENT_COMMANDS = ['otnodeUpdateCommand', 'sendTelemetryCommand']; + +/** + * @constant {number} MAX_COMMAND_DELAY_IN_MILLS - Maximum delay for commands + */ +exports.MAX_COMMAND_DELAY_IN_MILLS = 14400 * 60 * 1000; // 10 days + +/** + * @constant {number} DEFAULT_COMMAND_REPEAT_IN_MILLS - Default repeat interval + */ +exports.DEFAULT_COMMAND_REPEAT_INTERVAL_IN_MILLS = 5000; // 5 seconds + +/** + * @constant {number} DEFAULT_COMMAND_DELAY_IN_MILLS - Delay for default commands + */ +exports.DEFAULT_COMMAND_DELAY_IN_MILLS = 60 * 1000; // 60 seconds + +/** + * @constant {number} TRIPLE_STORE_CONNECT_MAX_RETRIES + * - Maximum retries for connecting to triple store + */ +exports.TRIPLE_STORE_CONNECT_MAX_RETRIES = 10; + +/** + * @constant {number} TRIPLE_STORE_CONNECT_RETRY_FREQUENCY + * - Wait interval between retries for connecting to triple store + */ +exports.TRIPLE_STORE_CONNECT_RETRY_FREQUENCY = 10; // 10 seconds + +/** + * @constant {number} TRIPLE_STORE_QUEUE_LIMIT + * - Triple store queue limit + */ +exports.TRIPLE_STORE_QUEUE_LIMIT = 5000; + +/** + * @constant {number} BLOCKCHAIN_QUEUE_LIMIT + * - Blockchain queue limit + */ +exports.BLOCKCHAIN_QUEUE_LIMIT = 25000; + +/** + * @constant {number} WEBSOCKET_PROVIDER_OPTIONS + * - Websocket provider options + */ +module.exports.WEBSOCKET_PROVIDER_OPTIONS = { + reconnect: { + auto: true, + delay: 1000, // ms + maxAttempts: 3, + }, + clientConfig: { + keepalive: true, + keepaliveInterval: 30 * 1000, // ms + }, +}; + +/** + * @constant {number} GET_MAX_TIME_MILLIS + * - Maximum time for get operation + */ +exports.GET_MAX_TIME_MILLIS = 15 * 1000; + +/** + * @constant {number} STORE_MAX_RETRIES + * - Maximum number of retries + */ +exports.STORE_MAX_TRIES = 3; + +/** + * @constant {number} STORE_BUSY_REPEAT_INTERVAL_IN_MILLS + * - Wait interval between retries for sending store requests + */ +exports.STORE_BUSY_REPEAT_INTERVAL_IN_MILLS = 4 * 1000; + +/** + * @constant {number} BUSYNESS_LIMITS + * - Max number of operations in triple store queue that indicate busyness + */ +exports.BUSYNESS_LIMITS = { + HANDLE_STORE: 20, + HANDLE_GET: 20, + HANDLE_SEARCH_ASSERTIONS: 20, + HANDLE_SEARCH_ENTITIES: 15, +}; + +/** + * @constant {number} STORE_MIN_SUCCESS_RATE + * - Min rate of successful responses from store queries for publish to be maked as COMPLETED + */ +exports.STORE_MIN_SUCCESS_RATE = 0.8; + +/** + * @constant {object} TRIPLE_STORE_IMPLEMENTATION - + * Names of available triple store implementations + */ +exports.TRIPLE_STORE_IMPLEMENTATION = { + BLAZEGRAPH: 'Blazegraph', + GRAPHDB: 'GraphDB', + FUSEKI: 'Fuseki', +}; + +/** + * @constant {number} NETWORK_MESSAGE_TYPES - + * Network message types + */ +exports.NETWORK_MESSAGE_TYPES = { + REQUESTS: { + PROTOCOL_INIT: 'PROTOCOL_INIT', + PROTOCOL_REQUEST: 'PROTOCOL_REQUEST', + }, + RESPONSES: { + ACK: 'ACK', + NACK: 'NACK', + BUSY: 'BUSY', + }, +}; + +/** + * @constant {number} MAX_OPEN_SESSIONS - + * Max number of open sessions + */ +exports.MAX_OPEN_SESSIONS = 10; + +/** + * @constant {number} NETWORK_HANDLER_TIMEOUT - + * Timeout for all handler methods for network requests + */ +exports.NETWORK_HANDLER_TIMEOUT = 120e3; + +/** + * @constant {object} ERROR_TYPE - + * Types of errors supported + */ +exports.ERROR_TYPE = { + PUBLISH: { + PUBLISH_START_ERROR: 'PublishStartError', + PUBLISH_ROUTE_ERROR: 'PublishRouteError', + PUBLISH_VALIDATE_ASSERTION_ERROR: 'PublishValidateAssertionError', + PUBLISH_VALIDATE_ASSERTION_REMOTE_ERROR: 'PublishValidateAssertionRemoteError', + PUBLISH_LOCAL_STORE_ERROR: 'PublishLocalStoreError', + PUBLISH_LOCAL_STORE_REMOTE_ERROR: 'PublishLocalStoreRemoteError', + PUBLISH_FIND_NODES_ERROR: 'PublishFindNodesError', + PUBLISH_STORE_INIT_ERROR: 'PublishStoreInitError', + PUBLISH_STORE_REQUEST_ERROR: 'PublishStoreRequestError', + PUBLISH_ERROR: 'PublishError', + PUBLISH_REMOTE_ERROR: 'PublishRemoteError', + }, + GET: { + GET_ASSERTION_ID_ERROR: 'GetAssertionIdError', + GET_LOCAL_ERROR: 'GetLocalError', + GET_NETWORK_ERROR: 'GetNetworkError', + GET_START_ERROR: 'GetStartError', + GET_INIT_ERROR: 'GetInitError', + GET_REQUEST_ERROR: 'GetRequestError', + GET_INIT_REMOTE_ERROR: 'GetInitRemoteError', + GET_REQUEST_REMOTE_ERROR: 'GetRequestRemoteError', + GET_ERROR: 'GetError', + }, +}; +/** + * @constant {object} OPERATION_ID_STATUS - + * Possible statuses for operation id + */ +exports.OPERATION_ID_STATUS = { + PENDING: 'PENDING', + FAILED: 'FAILED', + COMPLETED: 'COMPLETED', + SEARCHING_FOR_NODES: 'SEARCHING_FOR_NODES', + FIND_NODES_START: 'FIND_NODES_START', + FIND_NODES_END: 'FIND_NODES_END', + PUBLISH: { + VALIDATING_ASSERTION_START: 'VALIDATING_ASSERTION_START', + VALIDATING_ASSERTION_END: 'VALIDATING_ASSERTION_END', + VALIDATING_ASSERTION_REMOTE_START: 'VALIDATING_ASSERTION_REMOTE_START', + VALIDATING_ASSERTION_REMOTE_END: 'VALIDATING_ASSERTION_REMOTE_END', + VALIDATING_ASSERTION_STAKE_START: 'VALIDATING_ASSERTION_STAKE_START', + VALIDATING_ASSERTION_STAKE_END: 'VALIDATING_ASSERTION_STAKE_END', + INSERTING_ASSERTION: 'INSERTING_ASSERTION', + PUBLISHING_ASSERTION: 'PUBLISHING_ASSERTION', + PUBLISH_START: 'PUBLISH_START', + PUBLISH_INIT_START: 'PUBLISH_INIT_START', + PUBLISH_INIT_END: 'PUBLISH_INIT_END', + PUBLISH_PREP_ARGS_START: '', + PUBLISH_PREP_ARGS_END: '', + PUBLISH_CANONIZATION_START: '', + PUBLISH_CANONIZATION_END: '', + PUBLISH_GENERATE_METADATA_START: 'PUBLISH_GENERATE_METADATA_START', + PUBLISH_GENERATE_METADATA_END: 'PUBLISH_GENERATE_METADATA_END', + PUBLISH_BLOCKCHAIN_START: 'PUBLISH_BLOCKCHAIN_START', + PUBLISH_BLOCKCHAIN_END: 'PUBLISH_BLOCKCHAIN_END', + PUBLISH_LOCAL_STORE_START: 'PUBLISH_LOCAL_STORE_START', + PUBLISH_LOCAL_STORE_END: 'PUBLISH_LOCAL_STORE_END', + PUBLISH_REPLICATE_START: 'PUBLISH_REPLICATE_START', + PUBLISH_REPLICATE_END: 'PUBLISH_REPLICATE_END', + PUBLISH_END: 'PUBLISH_END', + }, + GET: { + ASSERTION_EXISTS_LOCAL_START: 'ASSERTION_EXISTS_LOCAL_START', + ASSERTION_EXISTS_LOCAL_END: 'ASSERTION_EXISTS_LOCAL_END', + GET_ASSERTION: 'GET_ASSERTION', + GET_START: 'GET_START', + GET_INIT_START: 'GET_INIT_START', + GET_INIT_END: 'GET_INIT_END', + GET_LOCAL_START: 'GET_LOCAL_START', + GET_LOCAL_END: 'GET_LOCAL_END', + GET_REMOTE_START: 'GET_REMOTE_START', + GET_REMOTE_END: 'GET_REMOTE_END', + GET_FETCH_FROM_NODES_START: 'GET_FETCH_FROM_NODES_START', + GET_FETCH_FROM_NODES_END: 'GET_FETCH_FROM_NODES_START', + GET_CREATE_ASSERTION_START: '', + GET_CREATE_ASSERTION_END: '', + GET_VERIFY_ASSERTION_START: '', + GET_VERIFY_ASSERTION_END: '', + GET_SAVE_ASSERTION_START: '', + GET_SAVE_ASSERTION_END: '', + GET_END: 'GET_END', + }, + SEARCH_ASSERTIONS: { + VALIDATING_QUERY: 'VALIDATING_QUERY', + SEARCHING_ASSERTIONS: 'SEARCHING_ASSERTIONS', + FAILED: 'FAILED', + COMPLETED: 'COMPLETED', + SEARCH_START: 'SEARCH_START', + SEARCH_END: 'SEARCH_END', + }, + SEARCH_ENTITIES: { + VALIDATING_QUERY: 'VALIDATING_QUERY', + SEARCHING_ENTITIES: 'SEARCHING_ENTITIES', + }, +}; + +/** + * @constant {object} NETWORK_PROTOCOLS - + * Network protocols + */ +exports.NETWORK_PROTOCOLS = { + STORE: '/store/1.0.0', + GET: '/get/1.0.0', + SEARCH: '/search/1.0.0', + SEARCH_RESULT: '/search/1.0.0/result', + SEARCH_ASSERTIONS: '/search/assertions/1.0.0', + SEARCH_ASSERTIONS_RESULT: '/search/assertions/1.0.0/result', +}; + +/** + * @constant {object} PUBLISH_STATUS - + * Possible statuses for publish procedure + */ +exports.PUBLISH_STATUS = { + IN_PROGRESS: 'IN_PROGRESS', + FAILED: 'FAILED', + COMPLETED: 'COMPLETED', +}; + +/** + * @constant {object} GET_STATUS - + * Possible statuses for get procedure + */ +exports.GET_STATUS = { + IN_PROGRESS: 'IN_PROGRESS', + FAILED: 'FAILED', + COMPLETED: 'COMPLETED', +}; + +/** + * @constant {object} PUBLISH_STATUS - + * Possible statuses for publish procedure + */ +exports.PUBLISH_REQUEST_STATUS = { + FAILED: 'FAILED', + COMPLETED: 'COMPLETED', +}; + +/** + * @constant {object} GET_REQUEST_STATUS - + * Possible statuses for get request + */ +exports.GET_REQUEST_STATUS = { + FAILED: 'FAILED', + COMPLETED: 'COMPLETED', +}; + +/** + * @constant {object} PUBLISH_METHOD - + * Possible methods for publish + */ +exports.PUBLISH_METHOD = { + PUBLISH: 'PUBLISH', + PROVISION: 'PROVISION', + UPDATE: 'UPDATE', +}; diff --git a/src/controller/http-api-router.js b/src/controller/http-api-router.js index e386af84d..78983e3ab 100644 --- a/src/controller/http-api-router.js +++ b/src/controller/http-api-router.js @@ -1,76 +1,55 @@ -const { HTTP_API_ROUTES } = require('../constants/constants'); - -// const supportedVersion = 'v1'; - class HttpApiRouter { constructor(ctx) { this.config = ctx.config; - this.fileSystemModule = ctx.fileSystemModule; this.httpClientModuleManager = ctx.httpClientModuleManager; - this.resolveController = ctx.resolveController; + this.getController = ctx.getController; this.publishController = ctx.publishController; this.searchController = ctx.searchController; this.resultController = ctx.resultController; this.infoController = ctx.infoController; + + this.jsonSchemaService = ctx.jsonSchemaService; } async initialize() { - await this.initializeMiddleware(); - await this.initializeSsl(); + await this.initializeBeforeMiddlewares(); await this.initializeListeners(); + await this.initializeAfterMiddlewares(); + await this.httpClientModuleManager.listen(); } async initializeListeners() { - // POST REQUESTS - this.httpClientModuleManager.post(HTTP_API_ROUTES.PUBLISH, (req, res) => { - this.publishController.handleHttpApiPublishRequest(req, res); - }); - - this.httpClientModuleManager.post(HTTP_API_ROUTES.PROVISION, (req, res) => { - this.publishController.handleHttpApiProvisionRequest(req, res); - }); - - this.httpClientModuleManager.post(HTTP_API_ROUTES.UPDATE, (req, res) => { - this.publishController.handleHttpApiUpdateRequest(req, res); - }); - - this.httpClientModuleManager.post(HTTP_API_ROUTES.QUERY, (req, res) => { - this.searchController.handleHttpApiQueryRequest(req, res); - }); - - this.httpClientModuleManager.post(HTTP_API_ROUTES.PROOFS, (req, res) => { - this.searchController.handleHttpApiProofsRequest(req, res); - }); - - // GET REQUESTS - this.httpClientModuleManager.get(HTTP_API_ROUTES.RESOLVE, (req, res) => { - this.resolveController.handleHttpApiResolveRequest(req, res); - }); - - this.httpClientModuleManager.get(HTTP_API_ROUTES.SEARCH_ASSERTIONS, (req, res) => { - this.searchController.handleHttpApiSearchAssertionsRequest(req, res); - }); - - this.httpClientModuleManager.get(HTTP_API_ROUTES.SEARCH_ENTITIES, (req, res) => { - this.searchController.handleHttpApiSearchEntitiesRequest(req, res); - }); - - this.httpClientModuleManager.get(HTTP_API_ROUTES.OPERATION_RESULT, (req, res) => { + this.httpClientModuleManager.post( + '/publish', + (req, res) => { + this.publishController.handleHttpApiPublishRequest(req, res); + }, + { rateLimit: true, requestSchema: this.jsonSchemaService.publishSchema() }, + ); + this.httpClientModuleManager.post( + '/get', + (req, res) => { + this.getController.handleHttpApiGetRequest(req, res); + }, + { rateLimit: true, requestSchema: this.jsonSchemaService.getSchema() }, + ); + + this.httpClientModuleManager.get('/:operation/:operationId', (req, res) => { this.resultController.handleHttpApiOperationResultRequest(req, res); }); - this.httpClientModuleManager.get(HTTP_API_ROUTES.INFO, (req, res) => { + this.httpClientModuleManager.get('/info', (req, res) => { this.infoController.handleHttpApiInfoRequest(req, res); }); } - async initializeMiddleware() { - this.middleware = {}; + async initializeBeforeMiddlewares() { + await this.httpClientModuleManager.initializeBeforeMiddlewares(); } - async initializeSsl() { - return false; + async initializeAfterMiddlewares() { + await this.httpClientModuleManager.initializeAfterMiddlewares(); } } diff --git a/src/controller/rpc-router.js b/src/controller/rpc-router.js index e69de29bb..bd1d03dda 100644 --- a/src/controller/rpc-router.js +++ b/src/controller/rpc-router.js @@ -0,0 +1,31 @@ +const constants = require('../constants/constants'); + +class RpcRouter { + constructor(ctx) { + this.networkModuleManager = ctx.networkModuleManager; + this.logger = ctx.logger; + + this.publishController = ctx.publishController; + this.getController = ctx.getController; + } + + async initialize() { + await this.initializeListeners(); + } + + async initializeListeners() { + this.networkModuleManager.handleMessage( + constants.NETWORK_PROTOCOLS.STORE, + (message, remotePeerId) => + this.publishController.handleNetworkStoreRequest(message, remotePeerId), + ); + + this.networkModuleManager.handleMessage( + constants.NETWORK_PROTOCOLS.GET, + (message, remotePeerId) => + this.getController.handleNetworkGetRequest(message, remotePeerId), + ); + } +} + +module.exports = RpcRouter; diff --git a/src/controller/v1/base-controller.js b/src/controller/v1/base-controller.js index 25509f011..db2a05f2d 100644 --- a/src/controller/v1/base-controller.js +++ b/src/controller/v1/base-controller.js @@ -1,28 +1,10 @@ const { v1: uuidv1 } = require('uuid'); -const Models = require('../../../models'); -const { HANDLER_ID_STATUS } = require('../../../modules/constants'); class BaseController { - generateHandlerId() { - return Models.handler_ids.create({ - status: HANDLER_ID_STATUS.PENDING, - }); - } - - async updateFailedHandlerId(handlerId, error) { - if (handlerId !== null) { - await Models.handler_ids.update( - { - status: HANDLER_ID_STATUS.FAILED, - data: JSON.stringify({ errorMessage: error.message }), - }, - { - where: { - handler_id: handlerId, - }, - }, - ); - } + constructor(ctx) { + this.repositoryModuleManager = ctx.repositoryModuleManager; + this.fileService = ctx.fileService; + this.logger = ctx.logger; } returnResponse(res, status, data) { @@ -30,7 +12,9 @@ class BaseController { } generateOperationId() { - return uuidv1(); + const operationId = uuidv1(); + this.logger.debug(`Generated operation id for request ${operationId}`); + return operationId; } } diff --git a/src/controller/v1/get-controller.js b/src/controller/v1/get-controller.js new file mode 100644 index 000000000..a7f280bff --- /dev/null +++ b/src/controller/v1/get-controller.js @@ -0,0 +1,87 @@ +const { NETWORK_MESSAGE_TYPES, OPERATION_ID_STATUS } = require('../../constants/constants'); +const BaseController = require('./base-controller'); + +class GetController extends BaseController { + constructor(ctx) { + super(ctx); + this.commandExecutor = ctx.commandExecutor; + this.operationIdService = ctx.operationIdService; + this.getService = ctx.getService; + } + + async handleHttpApiGetRequest(req, res) { + const operationId = await this.operationIdService.generateOperationId( + OPERATION_ID_STATUS.GET.GET_START, + ); + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.GET_INIT_START, + ); + + this.returnResponse(res, 202, { + operationId, + }); + + await this.repositoryModuleManager.createOperationRecord( + this.getService.getOperationName(), + operationId, + this.getService.getOperationStatus().IN_PROGRESS, + ); + + const { id } = req.body; + + this.logger.info(`Get for ${id} with operation id ${operationId} initiated.`); + + const commandData = { + operationId, + id, + }; + + const commandSequence = [ + 'getLatestAssertionIdCommand', + 'localGetCommand', + 'networkGetCommand', + ]; + + await this.commandExecutor.add({ + name: commandSequence[0], + sequence: commandSequence.slice(1), + delay: 0, + data: commandData, + transactional: false, + }); + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.GET.GET_INIT_END, + ); + } + + async handleNetworkGetRequest(message, remotePeerId) { + const { operationId, keywordUuid, messageType } = message.header; + const { assertionId } = message.data; + let commandName; + const commandData = { assertionId, remotePeerId, operationId, keywordUuid }; + switch (messageType) { + case NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_INIT: + commandName = 'handleGetInitCommand'; + break; + case NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_REQUEST: + commandName = 'handleGetRequestCommand'; + break; + default: + throw Error('unknown messageType'); + } + + await this.commandExecutor.add({ + name: commandName, + sequence: [], + delay: 0, + data: commandData, + transactional: false, + }); + } +} + +module.exports = GetController; diff --git a/src/controller/v1/info-controller.js b/src/controller/v1/info-controller.js index 7b04b4e2a..cb86f8c8c 100644 --- a/src/controller/v1/info-controller.js +++ b/src/controller/v1/info-controller.js @@ -1,6 +1,12 @@ -class InfoController { - handleHttpApiInfoRequest(req, res) { +const pjson = require('../../../package.json'); +const BaseController = require('./base-controller'); +class InfoController extends BaseController { + handleHttpApiInfoRequest(req, res) { + const { version } = pjson; + this.returnResponse(res, 200, { + version, + }); } } diff --git a/src/controller/v1/publish-controller.js b/src/controller/v1/publish-controller.js index 980b80bfb..0a849487c 100644 --- a/src/controller/v1/publish-controller.js +++ b/src/controller/v1/publish-controller.js @@ -1,18 +1,15 @@ -const path = require('path'); -const { MAX_FILE_SIZE, PUBLISH_METHOD } = require('../../../modules/constants'); -const Utilities = require('../../../modules/utilities'); const BaseController = require('./base-controller'); - -const PublishAllowedVisibilityParams = ['public', 'private']; +const { PUBLISH_METHOD, ERROR_TYPE, NETWORK_MESSAGE_TYPES } = require('../../constants/constants'); +const { OPERATION_ID_STATUS } = require('../../constants/constants'); class PublishController extends BaseController { constructor(ctx) { - super(); - this.workerPool = ctx.workerPool; + super(ctx); this.publishService = ctx.publishService; - this.logger = ctx.logger; - this.fileService = ctx.fileService; + this.ualService = ctx.ualService; this.commandExecutor = ctx.commandExecutor; + this.operationIdService = ctx.operationIdService; + this.repositoryModuleManager = ctx.repositoryModuleManager; } async handleHttpApiPublishRequest(req, res) { @@ -27,192 +24,99 @@ class PublishController extends BaseController { return this.handleHttpApiPublishMethod(req, res, PUBLISH_METHOD.UPDATE); } - async handleHttpApiPublishMethod(req, res, method) { - const operationId = this.generateOperationId(); - this.logger.emit({ - msg: 'Started measuring execution of publish command', - Event_name: 'publish_start', - Operation_name: 'publish', - Id_operation: operationId, - }); - this.logger.emit({ - msg: 'Started measuring execution of check arguments for publishing', - Event_name: 'publish_init_start', - Operation_name: 'publish_init', - Id_operation: operationId, - }); - - const validity = this.isRequestValid(req, true, true, true, true, false); - - if (!validity.isValid) { - return this.returnResponse(res, validity.code, { message: validity.message }); - } - - const handlerObject = await this.generateHandlerId(); + async handleHttpApiPublishMethod(req, res) { + const operationId = await this.operationIdService.generateOperationId( + OPERATION_ID_STATUS.PUBLISH.PUBLISH_START, + ); - const handlerId = handlerObject.handler_id; + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.PUBLISH_INIT_START, + ); this.returnResponse(res, 202, { - handler_id: handlerId, + operationId, }); - this.logger.emit({ - msg: 'Finished measuring execution of check arguments for publishing', - Event_name: 'publish_init_end', - Operation_name: 'publish_init', - Id_operation: operationId, - }); + const { assertion, blockchain, contract, tokenId } = req.body; + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.PUBLISH.PUBLISH_INIT_END, + ); + try { + await this.repositoryModuleManager.createOperationRecord( + this.publishService.getOperationName(), + operationId, + this.publishService.getOperationStatus().IN_PROGRESS, + ); - this.logger.emit({ - msg: 'Started measuring execution of preparing arguments for publishing', - Event_name: 'publish_prep_args_start', - Operation_name: 'publish_prep_args', - Id_operation: operationId, - }); + await this.operationIdService.cacheOperationIdData(operationId, { assertion }); - let fileContent; - const fileExtension = '.json'; - if (req.files) { - fileContent = req.files.file.data.toString(); - } else { - fileContent = req.body.data; - } + const ual = this.ualService.deriveUAL(blockchain, contract, tokenId); - const { ual } = req.body; + this.logger.info(`Received assertion with ual: ${ual}`); - const { visibility } = req.body; + const commandData = { + ual, + operationId, + }; - let keywords = []; - if (req.body.keywords) { - keywords = await this.workerPool.exec('JSONParse', [req.body.keywords.toLowerCase()]); - } - if (keywords.length > 10) { - keywords = keywords.slice(0, 10); - this.logger.warn( - 'Too many keywords provided, limit is 10. Publishing only to the first 10 keywords.', + const commandSequence = ['validateAssertionCommand', 'networkPublishCommand']; + + await this.commandExecutor.add({ + name: commandSequence[0], + sequence: commandSequence.slice(1), + delay: 0, + period: 5000, + retries: 3, + data: commandData, + transactional: false, + }); + } catch (error) { + this.logger.error( + `Error while initializing publish data: ${error.message}. ${error.stack}`, + ); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.FAILED, + 'Unable to publish data, Failed to process input data!', + ERROR_TYPE.PUBLISH.PUBLISH_ROUTE_ERROR, ); } - this.logger.emit({ - msg: 'Finished measuring execution of preparing arguments for publishing', - Event_name: 'publish_prep_args_end', - Operation_name: 'publish_prep_args', - Id_operation: operationId, - }); - - const handlerIdCachePath = this.fileService.getHandlerIdCachePath(); - - const documentPath = await this.fileService.writeContentsToFile( - handlerIdCachePath, - handlerId, - fileContent, - ); - const commandData = { - fileExtension, - keywords, - visibility, - method, - ual, - handlerId, - operationId, - documentPath, - }; - - const commandSequence = [ - 'prepareAssertionForPublish', - 'submitProofsCommand', - 'insertAssertionCommand', - 'sendAssertionCommand', - ]; + } - await this.commandExecutor.add({ - name: commandSequence[0], - sequence: commandSequence.slice(1), + async handleNetworkStoreRequest(message, remotePeerId) { + const { operationId, keywordUuid, messageType } = message.header; + const { assertionId, ual } = message.data; + const command = { + sequence: [], delay: 0, - data: commandData, + data: { remotePeerId, operationId, keywordUuid, assertionId, ual }, transactional: false, - }); - } - - isRequestValid( - req, - validateFiles = true, - validateFileSize = true, - validateKeywords = true, - validateVisibility = true, - validateUal = true, - ) { - if ( - validateFiles && - (!req.files || - !req.files.file || - path.extname(req.files.file.name).toLowerCase() !== '.json') && - !req.body.data - ) { - return { - isValid: false, - code: 400, - message: - 'No data provided. It is required to have assertion file or data in body, they must be in JSON-LD format.', - }; - } - - if (validateFileSize && req.files && req.files.file.size > MAX_FILE_SIZE) { - return { - isValid: false, - code: 400, - message: `File size limit is ${MAX_FILE_SIZE / (1024 * 1024)}MB.`, - }; - } - - if ( - validateFileSize && - req.body && - req.body.data && - Buffer.byteLength(req.body.data, 'utf-8') > MAX_FILE_SIZE - ) { - return { - isValid: false, - code: 400, - message: `File size limit is ${MAX_FILE_SIZE / (1024 * 1024)}MB.`, - }; - } - - if ( - validateKeywords && - req.body.keywords && - !Utilities.isArrayOfStrings(req.body.keywords) - ) { - return { - isValid: false, - code: 400, - message: - 'Keywords must be a non-empty array of strings, all strings must have double quotes.', - }; - } - - if ( - validateVisibility && - req.body.visibility && - !PublishAllowedVisibilityParams.includes(req.body.visibility) - ) { - return { - isValid: false, - code: 400, - message: 'Visibility must be a string, value can be public or private.', - }; - } - - if (validateUal && req.body.ual) { - return { - isValid: false, - code: 400, - message: 'Ual parameter missing in request.', - }; + }; + switch (messageType) { + case NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_INIT: + command.name = 'handleStoreInitCommand'; + command.period = 5000; + command.retries = 3; + + break; + case NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_REQUEST: + // eslint-disable-next-line no-case-declarations + const { assertionId: cachedAssertionId } = + await this.operationIdService.getCachedOperationIdData(operationId); + await this.operationIdService.cacheOperationIdData(operationId, { + assertionId: cachedAssertionId, + assertion: message.data.assertion, + }); + command.name = 'handleStoreRequestCommand'; + + break; + default: + throw Error('unknown messageType'); } - return { - isValid: true, - }; + await this.commandExecutor.add(command); } } diff --git a/src/controller/v1/request-schema/get-schema.js b/src/controller/v1/request-schema/get-schema.js new file mode 100644 index 000000000..9f5be49f1 --- /dev/null +++ b/src/controller/v1/request-schema/get-schema.js @@ -0,0 +1,9 @@ +module.exports = () => ({ + type: 'object', + required: ['id'], + properties: { + id: { + type: 'string', + }, + }, +}); diff --git a/src/controller/v1/request-schema/publish-schema.js b/src/controller/v1/request-schema/publish-schema.js new file mode 100644 index 000000000..fe6138eb2 --- /dev/null +++ b/src/controller/v1/request-schema/publish-schema.js @@ -0,0 +1,93 @@ +const { PUBLISH_TYPES } = require('../../../constants/constants'); + +const assertionSchemaProperties = (blockchainImplementationNames) => ({ + assertionId: { + type: 'string', + minLength: '1', + }, + assertion: { + type: 'array', + items: { + type: 'string', + }, + minItems: 1, + }, + blockchain: { + enum: blockchainImplementationNames, + }, + contract: { + type: 'string', + minLength: 1, + }, +}); + +const assertionSchemaRequired = ['assertionId', 'assertion', 'blockchain', 'contract']; + +const assetSchemaProperties = (blockchainImplementationNames) => ({ + ...assertionSchemaProperties(blockchainImplementationNames), + tokenId: { + type: 'integer', + minimum: 0, + }, +}); + +const assetSchemaRequired = [...assertionSchemaRequired, 'tokenId']; + +const indexSchemaProperties = (blockchainImplementationNames) => ({ + ...assetSchemaProperties(blockchainImplementationNames), + assertion: { + type: 'array', + items: { + type: 'string', + }, + minLength: 1, + maxLength: 5, + }, + keywords: { + type: 'array', + minLength: 1, + maxLength: 3, + uniqueItems: true, + }, +}); + +const indexSchemaRequired = [...assetSchemaRequired, 'keywords']; + +module.exports = (blockchainImplementationNames) => ({ + type: 'object', + required: ['publishType'], + properties: { + publishType: { + enum: Object.values(PUBLISH_TYPES), + }, + }, + allOf: [ + { + if: { + properties: { publishType: { const: PUBLISH_TYPES.ASSERTION } }, + }, + then: { + properties: assertionSchemaProperties(blockchainImplementationNames), + required: assertionSchemaRequired, + }, + }, + { + if: { + properties: { publishType: { const: PUBLISH_TYPES.ASSET } }, + }, + then: { + properties: assetSchemaProperties(blockchainImplementationNames), + required: assetSchemaRequired, + }, + }, + { + if: { + properties: { publishType: { const: PUBLISH_TYPES.INDEX } }, + }, + then: { + properties: indexSchemaProperties(blockchainImplementationNames), + required: indexSchemaRequired, + }, + }, + ], +}); diff --git a/src/controller/v1/request-schema/search-schema.js b/src/controller/v1/request-schema/search-schema.js new file mode 100644 index 000000000..e421faf92 --- /dev/null +++ b/src/controller/v1/request-schema/search-schema.js @@ -0,0 +1,20 @@ +module.exports = () => ({ + type: 'object', + required: ['keywords', 'limit', 'offset'], + properties: { + keywords: { + type: 'array', + minItems: 1, + maxItems: 3, + uniqueItems: true, + }, + limit: { + type: 'integer', + minimum: 1, + }, + offset: { + type: 'integer', + minimum: 0, + }, + }, +}); diff --git a/src/controller/v1/resolve-controller.js b/src/controller/v1/resolve-controller.js deleted file mode 100644 index 28fd5c401..000000000 --- a/src/controller/v1/resolve-controller.js +++ /dev/null @@ -1,7 +0,0 @@ -class ResolveController { - handleHttpApiResolveRequest (req, res, next) { - - } -} - -module.exports = ResolveController; diff --git a/src/controller/v1/result-controller.js b/src/controller/v1/result-controller.js index 82fca2f6c..989b49216 100644 --- a/src/controller/v1/result-controller.js +++ b/src/controller/v1/result-controller.js @@ -1,6 +1,79 @@ -class ResultController { - handleHttpApiOperationResultRequest (req, res) { +const { OPERATION_ID_STATUS } = require('../../constants/constants'); +const BaseController = require('./base-controller'); +const availableOperations = ['publish', 'get', 'assertions:search', 'entities:search']; + +class ResultController extends BaseController { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.operationIdService = ctx.operationIdService; + } + + async handleHttpApiOperationResultRequest(req, res) { + if (!availableOperations.includes(req.params.operation)) { + return this.returnResponse(res, 400, { + code: 400, + message: `Unsupported operation, available operations are: ${availableOperations}`, + }); + } + + const { operationId, operation } = req.params; + if (!this.operationIdService.operationIdInRightFormat(operationId)) { + return this.returnResponse(res, 400, { + code: 400, + message: 'Operation id is in wrong format', + }); + } + + try { + const handlerRecord = await this.operationIdService.getOperationIdRecord(operationId); + + if (handlerRecord) { + const response = { + status: handlerRecord.status, + }; + if (handlerRecord.status === OPERATION_ID_STATUS.FAILED) { + response.data = JSON.parse(handlerRecord.data); + } + + switch (operation) { + case 'assertions:search': + case 'entities:search': + case 'get': + if (handlerRecord.status === OPERATION_ID_STATUS.COMPLETED) { + response.data = await this.operationIdService.getCachedOperationIdData( + operationId, + ); + } + break; + case 'publish': + if (handlerRecord.status === OPERATION_ID_STATUS.COMPLETED) { + response.data = await this.operationIdService.getCachedOperationIdData( + operationId, + ); + } + break; + default: + break; + } + + return this.returnResponse(res, 200, response); + } + return this.returnResponse(res, 400, { + code: 400, + message: `Handler with id: ${operationId} does not exist.`, + }); + } catch (e) { + this.logger.error( + `Error while trying to fetch ${operation} data for operation id ${operationId}. Error message: ${e.message}. ${e.stack}`, + ); + + return this.returnResponse(res, 400, { + code: 400, + message: `Unexpected error at getting results: ${e.message}`, + }); + } } } diff --git a/src/controller/v1/search-controller.js b/src/controller/v1/search-controller.js index 017579d78..0b48b9317 100644 --- a/src/controller/v1/search-controller.js +++ b/src/controller/v1/search-controller.js @@ -1,18 +1,182 @@ -class SearchController { - handleHttpApiSearchAssertionsRequest (req, res) { +const BaseController = require('./base-controller'); +const { + OPERATION_ID_STATUS, + NETWORK_PROTOCOLS, + NETWORK_MESSAGE_TYPES, +} = require('../../constants/constants'); +class SearchController extends BaseController { + constructor(ctx) { + super(ctx); + this.logger = ctx.logger; + this.fileService = ctx.fileService; + this.commandExecutor = ctx.commandExecutor; + this.operationIdService = ctx.operationIdService; } - handleHttpApiSearchEntitiesRequest (req, res) { + async handleHttpApiSearchAssertionsRequest(req, res) { + const { query } = req.query; + const operationId = await this.operationIdService.generateOperationId( + OPERATION_ID_STATUS.SEARCH_ASSERTIONS.SEARCH_START, + ); + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.SEARCH_ASSERTIONS.VALIDATING_QUERY, + ); + + this.returnResponse(res, 202, { + operationId, + }); + + this.logger.info( + `Search assertions for ${query} with operation id ${operationId} initiated.`, + ); + + try { + // TODO: updated with query params from get req + const options = { + prefix: true, + limit: 40, + }; + + const commandData = { + operationId, + query, + options, + networkProtocol: NETWORK_PROTOCOLS.SEARCH_ASSERTIONS, + }; + + const commandSequence = [ + 'localSearchAssertionsCommand', + 'findNodesCommand', + 'searchAssertionsCommand', + ]; + + await this.commandExecutor.add({ + name: commandSequence[0], + sequence: commandSequence.slice(1), + delay: 0, + data: commandData, + transactional: false, + }); + } catch (error) { + this.logger.error( + `Error while initializing search for assertions: ${error.message}. ${error.stack}`, + ); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.FAILED, + 'Unable to search for assertions, Failed to process input data!', + ); + } + } + + async handleHttpApiSearchEntitiesRequest(req, res) { + const { query } = req.query; + + const operationId = await this.operationIdService.generateOperationId( + OPERATION_ID_STATUS.SEARCH_ENTITIES.VALIDATING_QUERY, + ); + + this.returnResponse(res, 202, { + operationId, + }); + + this.logger.info( + `Search entities for ${query} with operation id ${operationId} initiated.`, + ); + + try { + // TODO: updated with query params + const options = { + prefix: true, + limit: 40, + }; + + const commandData = { + operationId, + query, + options, + networkProtocol: NETWORK_PROTOCOLS.SEARCH, + }; + + const commandSequence = [ + 'localSearchEntitiesCommand', + 'findNodesCommand', + 'searchEntitiesCommand', + ]; + + await this.commandExecutor.add({ + name: commandSequence[0], + sequence: commandSequence.slice(1), + delay: 0, + data: commandData, + transactional: false, + }); + } catch (error) { + this.logger.error( + `Error while initializing search for entities: ${error.message}. ${error.stack}`, + ); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.FAILED, + 'Unable to search for entities, Failed to process input data!', + ); + } } - handleHttpApiQueryRequest (req, res) { + handleHttpApiQueryRequest() {} + + handleHttpApiProofsRequest() {} + + async handleNetworkSearchAssertionsRequest(message, remotePeerId) { + let commandName; + const { operationId } = message.header; + const commandData = { message, remotePeerId, operationId }; + switch (message.header.messageType) { + case NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_INIT: + commandName = 'handleSearchAssertionsInitCommand'; + break; + case NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_REQUEST: + commandName = 'handleSearchAssertionsRequestCommand'; + break; + default: + throw Error('unknown messageType'); + } + await this.commandExecutor.add({ + name: commandName, + sequence: [], + delay: 0, + data: commandData, + transactional: false, + }); } - handleHttpApiProofsRequest (req, res) { + async handleNetworkSearchEntitiesRequest(message, remotePeerId) { + let commandName; + const { operationId } = message.header; + const commandData = { message, remotePeerId, operationId }; + switch (message.header.messageType) { + case NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_INIT: + commandName = 'handleSearchEntitiesInitCommand'; + break; + case NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_REQUEST: + commandName = 'handleSearchEntitiesRequestCommand'; + break; + default: + throw Error('unknown messageType'); + } + await this.commandExecutor.add({ + name: commandName, + sequence: [], + delay: 0, + data: commandData, + transactional: false, + }); } } diff --git a/modules/logger/logger.js b/src/logger/logger.js similarity index 62% rename from modules/logger/logger.js rename to src/logger/logger.js index 6625c4e60..ea5972c46 100644 --- a/modules/logger/logger.js +++ b/src/logger/logger.js @@ -1,5 +1,7 @@ const pino = require('pino'); const path = require('path'); +const { existsSync } = require('fs'); +const { mkdirpSync } = require('fs-extra'); class Logger { constructor(logLevel = 'trace', telemetryHubEnabled) { @@ -10,28 +12,36 @@ class Logger { initialize(logLevel, telemetryHubEnabled) { try { const logFilename = path.join(path.resolve(__dirname, '../../'), 'logs/active.log'); - let chosenTargets = []; + const logDirname = path.join(path.resolve(__dirname, '../../'), 'logs'); + if (!existsSync(logDirname)) { + mkdirpSync(logDirname); + } + const chosenTargets = [ + { + target: './pino-pretty-transport', + options: { colorize: true }, + level: this.logLevel, + }, + ]; if (telemetryHubEnabled) { - chosenTargets = [ - { target: './pino-pretty-transport', options: { colorize: true }, level: 'trace' }, - { target: 'pino/file', level: 'trace', options: { destination: logFilename } }, - ]; - } else { - chosenTargets = [ - { target: './pino-pretty-transport', options: { colorize: true }, level: 'trace' }, - ]; + chosenTargets.push({ + target: 'pino/file', + level: this.logLevel, + options: { destination: logFilename }, + }); } - this.pinoLogger = pino({ transport: { targets: chosenTargets, }, customLevels: { emit: 15, + api: 25, }, level: logLevel, }); } catch (e) { + // eslint-disable-next-line no-console console.error(`Failed to create logger. Error message: ${e.message}`); } } @@ -45,14 +55,7 @@ class Logger { } error(obj) { - this.pinoLogger.error(obj.msg); - this.pinoLogger.emit({ - msg: `Found error will be reported to Telemetry: ${obj.Event_name}`, - Operation_name: 'Error', - Event_name: obj.Event_name, - Event_value1: obj.Event_value1 ? obj.Event_value1 : '', - Id_operation: obj.Id_operation ? obj.Id_operation : '', - }); + this.pinoLogger.error(obj); } warn(obj) { @@ -75,6 +78,10 @@ class Logger { this.pinoLogger.trace(obj); } + api(obj) { + this.pinoLogger.api(obj); + } + closeLogger(closingMessage) { const finalLogger = pino.final(this.pinoLogger); finalLogger.info(closingMessage); diff --git a/src/logger/pino-pretty-transport.js b/src/logger/pino-pretty-transport.js new file mode 100644 index 000000000..d8624d8bb --- /dev/null +++ b/src/logger/pino-pretty-transport.js @@ -0,0 +1,9 @@ +/* eslint-disable global-require */ +module.exports = (opts) => + require('pino-pretty')({ + ...opts, + translateTime: 'yyyy-mm-dd HH:MM:ss', + ignore: 'pid,hostname,Event_name,Operation_name,Id_operation', + hideObject: true, + messageFormat: (log, messageKey) => `${log[messageKey]}`, + }); diff --git a/modules/migration/base-migration.js b/src/migration/base-migration.js similarity index 97% rename from modules/migration/base-migration.js rename to src/migration/base-migration.js index b976fa4e8..4102094b9 100644 --- a/modules/migration/base-migration.js +++ b/src/migration/base-migration.js @@ -1,4 +1,3 @@ -const appRootPath = require('app-root-path'); const path = require('path'); const fs = require('fs-extra'); const FileService = require('../service/file-service'); @@ -21,7 +20,7 @@ class BaseMigration { this.migrationName = migrationName; this.logger = logger; this.config = config; - this.fileService = new FileService({ config: this.config }); + this.fileService = new FileService({ config: this.config, logger: this.logger }); } async migrationAlreadyExecuted() { diff --git a/src/modules/auto-updater/implementation/ot-auto-updater.js b/src/modules/auto-updater/implementation/ot-auto-updater.js index 86391f485..35add60e6 100644 --- a/src/modules/auto-updater/implementation/ot-auto-updater.js +++ b/src/modules/auto-updater/implementation/ot-auto-updater.js @@ -21,7 +21,7 @@ class OTAutoUpdater { async compareVersions() { try { this.logger.debug('AutoUpdater - Comparing versions...'); - const currentVersion = this.readAppVersion(appRootPath.path); + const currentVersion = await this.readAppVersion(appRootPath.path); const remoteVersion = await this.readRemoteVersion(); this.logger.debug(`AutoUpdater - Current version: ${currentVersion}`); this.logger.debug(`AutoUpdater - Remote Version: ${remoteVersion}`); @@ -54,7 +54,7 @@ class OTAutoUpdater { const currentDirectory = appRootPath.path; const rootPath = path.join(currentDirectory, '..'); - const currentVersion = this.readAppVersion(currentDirectory); + const currentVersion = await this.readAppVersion(currentDirectory); const newVersion = await this.readRemoteVersion(); const updateDirectory = path.join(rootPath, newVersion); const zipArchiveDestination = `${updateDirectory}.zip`; @@ -118,10 +118,10 @@ class OTAutoUpdater { /** * Reads the applications version from the package.json file. */ - readAppVersion(appPath) { + async readAppVersion(appPath) { const file = path.join(appPath, 'package.json'); this.logger.debug(`AutoUpdater - Reading app version from ${file}`); - const appPackage = fs.readFileSync(file); + const appPackage = await fs.promises.readFile(file); return JSON.parse(appPackage).version; } @@ -223,7 +223,7 @@ class OTAutoUpdater { throw Error('Extracted archive for new ot-node version is not valid'); } const sourcePath = path.join(extractedDataPath, destinationDirFiles[0]); - + await fs.remove(destinationPath); await fs.move(sourcePath, destinationPath); await fs.remove(extractedDataPath); @@ -240,24 +240,30 @@ class OTAutoUpdater { const command = `cd ${destination} && npm ci --omit=dev --ignore-scripts`; const child = exec(command); - + let rejected = false; child.stdout.on('data', (data) => { this.logger.trace(`AutoUpdater - npm ci - ${data.replace(/\r?\n|\r/g, '')}`); }); child.stderr.on('data', (data) => { - if (data.toLowerCase().includes('error')) { + if (data.includes('ERROR')) { + this.logger.trace(`Error message: ${data}`); // npm passes warnings as errors, only reject if "error" is included const errorData = data.replace(/\r?\n|\r/g, ''); this.logger.error( `AutoUpdater - Error installing dependencies. Error message: ${errorData}`, ); - reject(errorData); + if (!rejected) { + rejected = true; + reject(errorData); + } } }); child.stdout.on('end', () => { - this.logger.debug(`AutoUpdater - Dependencies installed successfully`); - resolve(); + if (!rejected) { + this.logger.debug(`AutoUpdater - Dependencies installed successfully`); + resolve(); + } }); }); } diff --git a/src/modules/base-module-manager.js b/src/modules/base-module-manager.js index 05292e468..46111fb4e 100644 --- a/src/modules/base-module-manager.js +++ b/src/modules/base-module-manager.js @@ -1,4 +1,11 @@ -const constants = require('../../modules/constants'); +const requiredModules = [ + 'repository', + 'httpClient', + 'network', + 'validation', + 'blockchain', + 'tripleStore', +]; class BaseModuleManager { constructor(ctx) { @@ -10,14 +17,23 @@ class BaseModuleManager { try { const moduleConfig = this.config.modules[this.getName()]; if (!moduleConfig || !moduleConfig.enabled) { - this.logger.warn( - `${this.getName()} module not defined or enabled in configuration`, - ); + const message = `${this.getName()} module not defined or enabled in configuration`; + if (requiredModules.includes(this.getName())) { + throw new Error(`${message} but it's required!`); + } + this.logger.warn(message); return false; } this.handlers = {}; for (const implementationName in moduleConfig.implementation) { + if ( + moduleConfig.defaultImplementation && + implementationName !== moduleConfig.defaultImplementation + ) { + // eslint-disable-next-line no-continue + continue; + } const implementationConfig = moduleConfig.implementation[implementationName]; if (!implementationConfig) { @@ -45,13 +61,18 @@ class BaseModuleManager { config: implementationConfig, }; } + if (Object.keys(this.handlers).length === 0) { + throw new Error(`No implementation initialized for module: ${this.getName()}.`); + } this.initialized = true; return true; - } catch (e) { - this.logger.error({ - msg: e.message, - Event_name: constants.ERROR_TYPE.MODULE_INITIALIZATION_ERROR, - }); + } catch (error) { + if (requiredModules.includes(this.getName())) { + throw new Error( + `Module is required but got error during initialization - ${error.message}`, + ); + } + this.logger.error(error.message); return false; } } @@ -67,6 +88,18 @@ class BaseModuleManager { } return this.handlers[name]; } + + getImplementationsNames() { + return Object.keys(this.handlers); + } + + removeImplementation(name = null) { + const keys = Object.keys(this.handlers); + if (keys.length === 1 || !name) { + delete this.handlers[keys[0]]; + } + delete this.handlers[name]; + } } module.exports = BaseModuleManager; diff --git a/src/modules/blockchain/blockchain-module-manager.js b/src/modules/blockchain/blockchain-module-manager.js new file mode 100644 index 000000000..15a7bd1c9 --- /dev/null +++ b/src/modules/blockchain/blockchain-module-manager.js @@ -0,0 +1,111 @@ +const BaseModuleManager = require('../base-module-manager'); + +class BlockchainModuleManager extends BaseModuleManager { + getName() { + return 'blockchain'; + } + + getPrivateKey(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getPrivateKey(); + } + } + + getPublicKey(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getPublicKey(); + } + } + + getManagementKey(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getManagementKey(); + } + } + + async deployIdentity(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.deployIdentity(); + } + } + + identityExists(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.identityExists(); + } + } + + getIdentity(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getIdentity(); + } + } + + async createProfile(blockchain, peerId) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.createProfile(peerId); + } + } + + async getEpochs(blockchain, UAI) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getEpochs(UAI); + } + } + + async getBlockNumber(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getBlockNumber(); + } + } + + getBlockTime(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getBlockTime(); + } + } + + async getChallenge(blockchain, UAI, epoch) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getChallenge(UAI, epoch); + } + } + + async answerChallenge(blockchain, UAI, epoch, proof, leaf, price) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.answerChallenge( + UAI, + epoch, + proof, + leaf, + price, + ); + } + } + + async getReward(blockchain, UAI, epoch) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getReward(UAI, epoch); + } + } + + async getLatestCommitHash(blockchain, contract, tokenId) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.getLatestCommitHash(contract, tokenId); + } + } + + async healthCheck(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.healthCheck(); + } + } + + async restartService(blockchain) { + if (this.getImplementation(blockchain)) { + return this.getImplementation(blockchain).module.restartService(); + } + } +} + +module.exports = BlockchainModuleManager; diff --git a/src/modules/blockchain/implementation/ganache/ganache-service.js b/src/modules/blockchain/implementation/ganache/ganache-service.js new file mode 100644 index 000000000..1be98d88d --- /dev/null +++ b/src/modules/blockchain/implementation/ganache/ganache-service.js @@ -0,0 +1,12 @@ +const Web3Service = require('../web3-service'); + +class GanacheService extends Web3Service { + constructor(ctx) { + super(ctx); + + this.baseTokenTicker = 'GANACHE_TOKENS'; + this.tracTicker = 'gTRAC'; + } +} + +module.exports = GanacheService; diff --git a/src/modules/blockchain/implementation/ot-parachain/ot-parachain-service.js b/src/modules/blockchain/implementation/ot-parachain/ot-parachain-service.js new file mode 100644 index 000000000..3fb02be02 --- /dev/null +++ b/src/modules/blockchain/implementation/ot-parachain/ot-parachain-service.js @@ -0,0 +1,186 @@ +const { ApiPromise, WsProvider } = require('@polkadot/api'); +const { Keyring } = require('@polkadot/keyring'); +const Web3Service = require('../web3-service'); + +const NATIVE_TOKEN_DECIMALS = 12; + +class OtParachainService extends Web3Service { + constructor(ctx) { + super(ctx); + + this.baseTokenTicker = 'OTP'; + this.tracTicker = 'TRAC'; + } + + async initialize(config, logger) { + this.config = config; + this.logger = logger; + this.rpcNumber = 0; + + await Promise.all([this.initializeWeb3(), this.initializeParachainProvider()]); + await this.checkEvmAccountsMapping(); + await this.initializeContracts(); + } + + async checkEvmAccountsMapping() { + const { evmOperationalWalletPublicKey, evmManagementWalletPublicKey } = this.config; + const operationalAccount = await this.queryParachainState('evmAccounts', 'accounts', [ + evmOperationalWalletPublicKey, + ]); + if (!operationalAccount || operationalAccount.toHex() === '0x') { + throw Error('Missing account mapping for operational wallet'); + } + + const managementAccount = await this.queryParachainState('evmAccounts', 'accounts', [ + evmManagementWalletPublicKey, + ]); + if (!managementAccount || managementAccount.toHex() === '0x') { + throw Error('Missing account mapping for management wallet'); + } + } + + async initializeEvmAccounts() { + const { + substrateOperationalWalletPrivateKey, + substrateManagementWalletPrivateKey, + evmOperationalWalletPublicKey, + evmOperationalWalletPrivateKey, + evmManagementWalletPublicKey, + evmManagementWalletPrivateKey, + } = this.config; + + await Promise.all([ + this.bindEvmAccount( + evmOperationalWalletPublicKey, + evmOperationalWalletPrivateKey, + substrateOperationalWalletPrivateKey, + ), + this.bindEvmAccount( + evmManagementWalletPublicKey, + evmManagementWalletPrivateKey, + substrateManagementWalletPrivateKey, + ), + ]); + } + + async bindEvmAccount(evmPublicKey, evmPrivateKey, substratePrivateKey) { + let account = await this.queryParachainState('evmAccounts', 'accounts', [evmPublicKey]); + + if (account.toHex() === '0x') { + const { signature } = await this.web3.eth.accounts.sign(evmPublicKey, evmPrivateKey); + const keyring = new Keyring({ type: 'sr25519' }); + account = await this.callParachainExtrinsic( + keyring.createFromUri(substratePrivateKey), + 'evmAccounts', + 'claimAccount', + [evmPublicKey, signature], + ); + } + + if (account.toHex() === '0x') throw Error('Unable to create account mapping for otp'); + + return account; + } + + async callParachainExtrinsic(keyring, extrinsic, method, args) { + let result; + while (!result) { + try { + // eslint-disable-next-line no-await-in-loop + result = this.parachainProvider.tx[extrinsic][method](...args).signAndSend(keyring); + + return result; + } catch (error) { + // eslint-disable-next-line no-await-in-loop + await this.handleParachainError(error, method); + } + } + } + + async queryParachainState(state, method, args) { + let result; + while (!result) { + try { + // eslint-disable-next-line no-await-in-loop + result = await this.parachainProvider.query[state][method](...args); + + return result; + } catch (error) { + // eslint-disable-next-line no-await-in-loop + await this.handleParachainError(error, method); + } + } + } + + async initializeParachainProvider() { + let tries = 0; + let isRpcConnected = false; + while (!isRpcConnected) { + if (tries >= this.config.rpcEndpoints.length) { + throw Error( + 'Blockchain initialisation failed, unable to initialize parachain provider!', + ); + } + + try { + // Initialise the provider to connect to the local node + const provider = new WsProvider(this.config.rpcEndpoints[this.rpcNumber]); + + // eslint-disable-next-line no-await-in-loop + this.parachainProvider = await new ApiPromise({ provider }).isReady; + isRpcConnected = true; + } catch (e) { + this.logger.warn( + `Unable to create parachain provider for endpoint : ${ + this.config.rpcEndpoints[this.rpcNumber] + }.`, + ); + tries += 1; + this.rpcNumber = (this.rpcNumber + 1) % this.config.rpcEndpoints.length; + } + } + } + + async getGasPrice() { + if (this.config.gasPriceOracleLink) return super.getGasPrice(); + + try { + return this.web3.eth.getGasPrice(); + } catch (error) { + return undefined; + } + } + + async handleParachainError(error, method) { + let isRpcError = false; + try { + await this.parachainProvider.rpc.net.listening(); + } catch (rpcError) { + isRpcError = true; + this.logger.warn( + `Unable to execute substrate method ${method} using blockchain rpc : ${ + this.config.rpcEndpoints[this.rpcNumber] + }.`, + ); + await this.restartParachainProvider(); + } + if (!isRpcError) throw error; + } + + async restartParachainProvider() { + this.rpcNumber = (this.rpcNumber + 1) % this.config.rpcEndpoints.length; + this.logger.warn( + `There was an issue with current parachain provider. Connecting to ${ + this.config.rpcEndpoints[this.rpcNumber] + }`, + ); + await this.initializeParachainProvider(); + } + + async getNativeTokenBalance() { + const nativeBalance = await this.web3.eth.getBalance(this.getPublicKey()); + return nativeBalance / 10 ** NATIVE_TOKEN_DECIMALS; + } +} + +module.exports = OtParachainService; diff --git a/src/modules/blockchain/implementation/polygon/polygon-service.js b/src/modules/blockchain/implementation/polygon/polygon-service.js new file mode 100644 index 000000000..77f07f7cd --- /dev/null +++ b/src/modules/blockchain/implementation/polygon/polygon-service.js @@ -0,0 +1,12 @@ +const Web3Service = require('../web3-service'); + +class PolygonService extends Web3Service { + constructor(ctx) { + super(ctx); + + this.baseTokenTicker = 'MATIC'; + this.tracTicker = 'mTRAC'; + } +} + +module.exports = PolygonService; diff --git a/src/modules/blockchain/implementation/web3-service.js b/src/modules/blockchain/implementation/web3-service.js new file mode 100644 index 000000000..0e4ed2eb5 --- /dev/null +++ b/src/modules/blockchain/implementation/web3-service.js @@ -0,0 +1,363 @@ +const Web3 = require('web3'); +const axios = require('axios'); +const { peerId2Hash } = require('assertion-tools'); +const Hub = require('dkg-evm-module/build/contracts/Hub.json'); +const AssetRegistry = require('dkg-evm-module/build/contracts/AssetRegistry.json'); +const ERC20Token = require('dkg-evm-module/build/contracts/ERC20Token.json'); +const Identity = require('dkg-evm-module/build/contracts/Identity.json'); +const Profile = require('dkg-evm-module/build/contracts/Profile.json'); +const ProfileStorage = require('dkg-evm-module/build/contracts/ProfileStorage.json'); +const { INIT_STAKE_AMOUNT, WEBSOCKET_PROVIDER_OPTIONS } = require('../../../constants/constants'); + +class Web3Service { + async initialize(config, logger) { + this.config = config; + this.logger = logger; + + this.rpcNumber = 0; + await this.initializeWeb3(); + await this.initializeContracts(); + } + + async initializeWeb3() { + let tries = 0; + let isRpcConnected = false; + while (!isRpcConnected) { + if (tries >= this.config.rpcEndpoints.length) { + throw Error('Blockchain initialisation failed'); + } + + try { + if (this.config.rpcEndpoints[this.rpcNumber].startsWith('ws')) { + const provider = new Web3.providers.WebsocketProvider( + this.config.rpcEndpoints[this.rpcNumber], + WEBSOCKET_PROVIDER_OPTIONS, + ); + this.web3 = new Web3(provider); + } else { + this.web3 = new Web3(this.config.rpcEndpoints[this.rpcNumber]); + } + // eslint-disable-next-line no-await-in-loop + isRpcConnected = await this.web3.eth.net.isListening(); + } catch (e) { + this.logger.warn( + `Unable to connect to blockchain rpc : ${ + this.config.rpcEndpoints[this.rpcNumber] + }.`, + ); + tries += 1; + this.rpcNumber = (this.rpcNumber + 1) % this.config.rpcEndpoints.length; + } + } + } + + async initializeContracts() { + // TODO encapsulate in a generic function + this.logger.info(`Hub contract address is ${this.config.hubContractAddress}`); + this.hubContract = new this.web3.eth.Contract(Hub.abi, this.config.hubContractAddress); + + const assetRegistryAddress = await this.callContractFunction( + this.hubContract, + 'getContractAddress', + ['AssetRegistry'], + ); + this.AssetRegistryContract = new this.web3.eth.Contract( + AssetRegistry.abi, + assetRegistryAddress, + ); + + const tokenAddress = await this.callContractFunction( + this.hubContract, + 'getContractAddress', + ['Token'], + ); + this.TokenContract = new this.web3.eth.Contract(ERC20Token.abi, tokenAddress); + + const profileAddress = await this.callContractFunction( + this.hubContract, + 'getContractAddress', + ['Profile'], + ); + this.ProfileContract = new this.web3.eth.Contract(Profile.abi, profileAddress); + + const profileStorageAddress = await this.callContractFunction( + this.hubContract, + 'getContractAddress', + ['ProfileStorage'], + ); + this.ProfileStorageContract = new this.web3.eth.Contract( + ProfileStorage.abi, + profileStorageAddress, + ); + + if (this.identityExists()) { + this.identityContract = new this.web3.eth.Contract(Identity.abi, this.getIdentity()); + } + + this.logger.debug( + `Connected to blockchain rpc : ${this.config.rpcEndpoints[this.rpcNumber]}.`, + ); + + await this.logBalances(); + } + + async logBalances() { + const nativeBalance = await this.getNativeTokenBalance(); + const tokenBalance = await this.getTokenBalance(); + this.logger.info( + `Balance of ${this.getPublicKey()} is ${nativeBalance} ${ + this.baseTokenTicker + } and ${tokenBalance} ${this.tracTicker}.`, + ); + } + + async getNativeTokenBalance() { + const nativeBalance = await this.web3.eth.getBalance(this.getPublicKey()); + return this.web3.utils.fromWei(nativeBalance); + } + + async getTokenBalance() { + const tokenBalance = await this.callContractFunction(this.TokenContract, 'balanceOf', [ + this.getPublicKey(), + ]); + return this.web3.utils.fromWei(tokenBalance); + } + + identityExists() { + return this.config.identity != null; + } + + getIdentity() { + return this.config.identity; + } + + getBlockNumber() { + return this.web3.eth.getBlockNumber(); + } + + // TODO get from blockchain + getBlockTime() { + return this.config.blockTime; + } + + async deployIdentity() { + const transactionReceipt = await this.deployContract(Identity, [ + this.getPublicKey(), + this.getManagementKey(), + ]); + this.config.identity = transactionReceipt.contractAddress; + } + + async createProfile(peerId) { + await this.executeContractFunction(this.TokenContract, 'increaseAllowance', [ + this.ProfileContract.options.address, + INIT_STAKE_AMOUNT, + ]); + + const nodeId = await peerId2Hash(peerId); + + await this.executeContractFunction(this.ProfileContract, 'createProfile', [ + this.getManagementKey(), + nodeId, + INIT_STAKE_AMOUNT, + this.getIdentity(), + ]); + } + + getEpochs(UAI) { + return this.callContractFunction(this.AssetRegistryContract, 'getEpochs', [UAI]); + } + + async getChallenge(UAI, epoch) { + return this.callContractFunction(this.AssetRegistryContract, 'getChallenge', [ + UAI, + epoch, + this.getIdentity(), + ]); + } + + async answerChallenge(UAI, epoch, proof, leaf, price) { + return this.executeContractFunction(this.AssetRegistryContract, 'answerChallenge', [ + UAI, + epoch, + proof, + leaf, + price, + this.getIdentity(), + ]); + } + + async getReward(UAI, epoch) { + return this.executeContractFunction(this.AssetRegistryContract, 'getReward', [ + UAI, + epoch, + this.getIdentity(), + ]); + } + + getPrivateKey() { + return this.config.evmOperationalWalletPrivateKey; + } + + getPublicKey() { + return this.config.evmOperationalWalletPublicKey; + } + + getManagementKey() { + return this.config.evmManagementWalletPublicKey; + } + + async getGasPrice() { + try { + const response = await axios.get(this.config.gasPriceOracleLink); + const gasPriceRounded = Math.round(response.data.standard.maxFee * 1e9); + return gasPriceRounded; + } catch (error) { + return undefined; + } + } + + async callContractFunction(contractInstance, functionName, args) { + let result; + while (!result) { + try { + // eslint-disable-next-line no-await-in-loop + result = await contractInstance.methods[functionName](...args).call(); + } catch (error) { + // eslint-disable-next-line no-await-in-loop + await this.handleError(error, functionName); + } + } + + return result; + } + + async executeContractFunction(contractInstance, functionName, args) { + let result; + while (!result) { + try { + /* eslint-disable no-await-in-loop */ + const gasPrice = await this.getGasPrice(); + + const gasLimit = await contractInstance.methods[functionName](...args).estimateGas({ + from: this.getPublicKey(), + }); + + const encodedABI = contractInstance.methods[functionName](...args).encodeABI(); + const tx = { + from: this.getPublicKey(), + to: contractInstance.options.address, + data: encodedABI, + gasPrice: gasPrice || this.web3.utils.toWei('20', 'Gwei'), + gas: gasLimit || this.web3.utils.toWei('900', 'Kwei'), + }; + + const createdTransaction = await this.web3.eth.accounts.signTransaction( + tx, + this.getPrivateKey(), + ); + result = await this.web3.eth.sendSignedTransaction( + createdTransaction.rawTransaction, + ); + } catch (error) { + await this.handleError(error, functionName); + } + } + + return result; + } + + async deployContract(contract, args) { + let result; + while (!result) { + try { + const contractInstance = new this.web3.eth.Contract(contract.abi); + const gasPrice = await this.getGasPrice(); + + const gasLimit = await contractInstance + .deploy({ + data: contract.bytecode, + arguments: args, + }) + .estimateGas({ + from: this.getPublicKey(), + }); + + const encodedABI = contractInstance + .deploy({ + data: contract.bytecode, + arguments: args, + }) + .encodeABI(); + + const tx = { + from: this.getPublicKey(), + data: encodedABI, + gasPrice: gasPrice || this.web3.utils.toWei('20', 'Gwei'), + gas: gasLimit || this.web3.utils.toWei('900', 'Kwei'), + }; + + const createdTransaction = await this.web3.eth.accounts.signTransaction( + tx, + this.getPrivateKey(), + ); + + return this.web3.eth.sendSignedTransaction(createdTransaction.rawTransaction); + } catch (error) { + await this.handleError(error, 'deploy'); + } + } + + return result; + } + + async getLatestCommitHash(contract, tokenId) { + const assertionId = await this.callContractFunction( + this.AssetRegistryContract, + 'getCommitHash', + [tokenId, 0], + ); + + return assertionId; + } + + async healthCheck() { + try { + const gasPrice = await this.web3.eth.getGasPrice(); + if (gasPrice) return true; + } catch (e) { + this.logger.error(`Error on checking blockchain. ${e}`); + return false; + } + return false; + } + + async handleError(error, functionName) { + let isRpcError = false; + try { + await this.web3.eth.net.isListening(); + } catch (rpcError) { + isRpcError = true; + this.logger.warn( + `Unable to execute smart contract function ${functionName} using blockchain rpc : ${ + this.config.rpcEndpoints[this.rpcNumber] + }.`, + ); + await this.restartService(); + } + if (!isRpcError) throw error; + } + + async restartService() { + this.rpcNumber = (this.rpcNumber + 1) % this.config.rpcEndpoints.length; + this.logger.warn( + `There was an issue with current blockchain rpc. Connecting to ${ + this.config.rpcEndpoints[this.rpcNumber] + }`, + ); + await this.initializeWeb3(); + await this.initializeContracts(); + } +} + +module.exports = Web3Service; diff --git a/src/modules/http-client/http-client-module-manager.js b/src/modules/http-client/http-client-module-manager.js index deaa2992d..564dcc22d 100644 --- a/src/modules/http-client/http-client-module-manager.js +++ b/src/modules/http-client/http-client-module-manager.js @@ -1,19 +1,24 @@ const BaseModuleManager = require('../base-module-manager'); class HttpClientModuleManager extends BaseModuleManager { + constructor(ctx) { + super(ctx); + this.authService = ctx.authService; + } + getName() { return 'httpClient'; } - get(route, ...callback) { + get(route, callback, options = {}) { if (this.initialized) { - return this.getImplementation().module.get(route, ...callback); + return this.getImplementation().module.get(route, callback, options); } } - post(route, ...callback) { + post(route, callback, options = {}) { if (this.initialized) { - return this.getImplementation().module.post(route, ...callback); + return this.getImplementation().module.post(route, callback, options); } } @@ -22,6 +27,24 @@ class HttpClientModuleManager extends BaseModuleManager { return this.getImplementation().module.sendResponse(res, status, returnObject); } } + + async listen() { + if (this.initialized) { + return this.getImplementation().module.listen(); + } + } + + async initializeBeforeMiddlewares() { + if (this.initialized) { + return this.getImplementation().module.initializeBeforeMiddlewares(this.authService); + } + } + + async initializeAfterMiddlewares() { + if (this.initialized) { + return this.getImplementation().module.initializeAfterMiddlewares(this.authService); + } + } } module.exports = HttpClientModuleManager; diff --git a/src/modules/http-client/implementation/express-http-client.js b/src/modules/http-client/implementation/express-http-client.js index 02f7769e5..f4be00eb9 100644 --- a/src/modules/http-client/implementation/express-http-client.js +++ b/src/modules/http-client/implementation/express-http-client.js @@ -1,22 +1,82 @@ const express = require('express'); +const https = require('https'); +const fs = require('fs-extra'); +const fileUpload = require('express-fileupload'); +const cors = require('cors'); +const requestValidationMiddleware = require('./middleware/request-validation-middleware'); +const rateLimiterMiddleware = require('./middleware/rate-limiter-middleware'); +const authenticationMiddleware = require('./middleware/authentication-middleware'); +const authorizationMiddleware = require('./middleware/authorization-middleware'); class ExpressHttpClient { - async initialize() { + async initialize(config, logger) { + this.config = config; + this.logger = logger; this.app = express(); } - async get(route, ...callback) { - this.app.get(route, callback); + async get(route, callback, options) { + this.app.get(route, ...this.selectMiddlewares(options), callback); } - async post(route, ...callback) { - this.app.post(route, callback); + async post(route, callback, options) { + this.app.post(route, ...this.selectMiddlewares(options), callback); } sendResponse(res, status, returnObject) { res.status(status); res.send(returnObject); } + + async listen() { + if (this.config.useSsl) { + this.httpsServer = https.createServer( + { + key: await fs.promises.readFile(this.config.sslKeyPath), + cert: await fs.promises.readFile(this.config.sslCertificatePath), + }, + this.app, + ); + this.httpsServer.listen(this.config.port); + } else { + this.app.listen(this.config.port); + } + this.logger.info(`Node listening on port: ${this.config.port}`); + } + + selectMiddlewares(options) { + const middlewares = []; + if (options.rateLimit) middlewares.push(rateLimiterMiddleware(this.config.rateLimiter)); + if (options.requestSchema) + middlewares.push(requestValidationMiddleware(options.requestSchema)); + + return middlewares; + } + + async initializeBeforeMiddlewares(authService) { + this.app.use(authenticationMiddleware(authService)); + this.app.use(authorizationMiddleware(authService)); + this._initializeBaseMiddlewares(); + } + + async initializeAfterMiddlewares() { + // placeholder method for after middlewares + } + + _initializeBaseMiddlewares() { + this.app.use( + fileUpload({ + createParentPath: true, + }), + ); + + this.app.use(cors()); + this.app.use(express.json()); + this.app.use((req, res, next) => { + this.logger.api(`${req.method}: ${req.url} request received`); + return next(); + }); + } } module.exports = ExpressHttpClient; diff --git a/src/modules/http-client/implementation/middleware/authentication-middleware.js b/src/modules/http-client/implementation/middleware/authentication-middleware.js new file mode 100644 index 000000000..970bb92c9 --- /dev/null +++ b/src/modules/http-client/implementation/middleware/authentication-middleware.js @@ -0,0 +1,37 @@ +const parseIp = (req) => { + let xForwardedFor; + let socketRemoteAddress; + + if (req.headers['x-forwarded-for']) { + xForwardedFor = req.headers['x-forwarded-for'].split(',').shift(); + } + + if (req.socket) { + socketRemoteAddress = req.socket.remoteAddress; + } + + return xForwardedFor || socketRemoteAddress; +}; + +module.exports = (authService) => async (req, res, next) => { + const operation = req.url.split('/')[1].toUpperCase(); + + if (authService.isPublicOperation(operation)) { + return next(); + } + + const ip = parseIp(req); + + const token = + req.headers.authorization && + req.headers.authorization.startsWith('Bearer ') && + req.headers.authorization.split(' ')[1]; + + const isAuthenticated = await authService.authenticate(ip, token); + + if (!isAuthenticated) { + return res.status(401).send('Unauthenticated.'); + } + + next(); +}; diff --git a/src/modules/http-client/implementation/middleware/authorization-middleware.js b/src/modules/http-client/implementation/middleware/authorization-middleware.js new file mode 100644 index 000000000..f67374956 --- /dev/null +++ b/src/modules/http-client/implementation/middleware/authorization-middleware.js @@ -0,0 +1,22 @@ +const getToken = (req) => { + if (req.headers.authorization && req.headers.authorization.startsWith('Bearer ')) { + return req.headers.authorization.split(' ')[1]; + } +}; + +module.exports = (authService) => async (req, res, next) => { + const operation = req.url.split('/')[1].toUpperCase(); + + if (authService.isPublicOperation(operation)) { + return next(); + } + + const token = getToken(req); + const isAuthorized = await authService.isAuthorized(token, operation); + + if (!isAuthorized) { + return res.status(403).send('Forbidden.'); + } + + next(); +}; diff --git a/src/modules/http-client/implementation/middleware/rate-limiter-middleware.js b/src/modules/http-client/implementation/middleware/rate-limiter-middleware.js new file mode 100644 index 000000000..ad087ff89 --- /dev/null +++ b/src/modules/http-client/implementation/middleware/rate-limiter-middleware.js @@ -0,0 +1,10 @@ +const rateLimiter = require('express-rate-limit'); + +module.exports = (config) => + rateLimiter({ + windowMs: config.timeWindowSeconds * 1000, + max: config.maxRequests, + message: `Too many requests sent, maximum number of requests per minute is ${config.maxRequests}`, + standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers + legacyHeaders: false, // Disable the `X-RateLimit-*` headers + }); diff --git a/src/modules/http-client/implementation/middleware/request-validation-middleware.js b/src/modules/http-client/implementation/middleware/request-validation-middleware.js new file mode 100644 index 000000000..7f5330d62 --- /dev/null +++ b/src/modules/http-client/implementation/middleware/request-validation-middleware.js @@ -0,0 +1,22 @@ +const { Validator } = require('jsonschema'); + +const v = new Validator(); + +module.exports = function requestValidationMiddleware(requestSchema) { + return (req, res, next) => { + if (req.get('Content-Type') !== 'application/json') { + res.status(401).send('Invalid header format'); + return; + } + + const result = v.validate(req.body, requestSchema); + if (result.errors.length > 0) { + res.status(400).json({ + status: 'FAILED', + errors: result.errors.map((e) => e.message), + }); + } else { + next(); + } + }; +}; diff --git a/src/modules/network/implementation/libp2p-service.js b/src/modules/network/implementation/libp2p-service.js new file mode 100644 index 000000000..12fc06693 --- /dev/null +++ b/src/modules/network/implementation/libp2p-service.js @@ -0,0 +1,537 @@ +const Libp2p = require('libp2p'); +const { Record } = require('libp2p-record'); +const KadDHT = require('libp2p-kad-dht'); +const Bootstrap = require('libp2p-bootstrap'); +const { NOISE } = require('libp2p-noise'); +const MPLEX = require('libp2p-mplex'); +const TCP = require('libp2p-tcp'); +const pipe = require('it-pipe'); +const lp = require('it-length-prefixed'); +const map = require('it-map'); +const PeerId = require('peer-id'); +const { InMemoryRateLimiter } = require('rolling-rate-limiter'); +const toobusy = require('toobusy-js'); +const { v5: uuidv5 } = require('uuid'); +const constants = require('../../../constants/constants'); + +const initializationObject = { + addresses: { + listen: ['/ip4/0.0.0.0/tcp/9000'], + }, + modules: { + transport: [TCP], + streamMuxer: [MPLEX], + connEncryption: [NOISE], + dht: KadDHT, + }, + dialer: { + dialTimeout: 2e3, + }, + config: { + dht: { + enabled: true, + }, + }, +}; + +class Libp2pService { + async initialize(config, logger) { + this.config = config; + this.logger = logger; + + if (this.config.bootstrap.length > 0) { + initializationObject.modules.peerDiscovery = [Bootstrap]; + initializationObject.config.peerDiscovery = { + autoDial: true, + [Bootstrap.tag]: { + enabled: true, + list: this.config.bootstrap, + }, + }; + } + initializationObject.addresses = { + listen: [`/ip4/0.0.0.0/tcp/${this.config.port}`], // for production + // announce: ['/dns4/auto-relay.libp2p.io/tcp/443/wss/p2p/QmWDn2LY8nannvSWJzruUYoLZ4vV83vfCBwd8DipvdgQc3'] + }; + let id; + let privKey; + if (!this.config.peerId) { + if (!this.config.privateKey) { + id = await PeerId.create({ bits: 1024, keyType: 'RSA' }); + privKey = id.toJSON().privKey; + } else { + privKey = this.config.privateKey; + id = await PeerId.createFromPrivKey(this.config.privateKey); + } + this.config.privateKey = privKey; + this.config.peerId = id; + } + + initializationObject.peerId = this.config.peerId; + this._initializeRateLimiters(); + /** + * sessions = { + * [peerId]: { + * [operationId]: { + * [keywordUuid] : { + * stream + * } + * } + * } + * } + */ + this.sessions = {}; + this.node = await Libp2p.create(initializationObject); + this._initializeNodeListeners(); + await this.node.start(); + const port = parseInt(this.node.multiaddrs.toString().split('/')[4], 10); + const peerId = this.node.peerId._idB58String; + this.config.id = peerId; + this.logger.info(`Network ID is ${peerId}, connection port is ${port}`); + } + + _initializeNodeListeners() { + this.node.on('peer:discovery', (peer) => { + this._onPeerDiscovery(peer); + }); + this.node.connectionManager.on('peer:connect', (connection) => { + this._onPeerConnect(connection); + }); + } + + _initializeRateLimiters() { + const basicRateLimiter = new InMemoryRateLimiter({ + interval: constants.NETWORK_API_RATE_LIMIT.TIME_WINDOW_MILLS, + maxInInterval: constants.NETWORK_API_RATE_LIMIT.MAX_NUMBER, + }); + + const spamDetection = new InMemoryRateLimiter({ + interval: constants.NETWORK_API_SPAM_DETECTION.TIME_WINDOW_MILLS, + maxInInterval: constants.NETWORK_API_SPAM_DETECTION.MAX_NUMBER, + }); + + this.rateLimiter = { + basicRateLimiter, + spamDetection, + }; + + this.blackList = {}; + } + + _onPeerDiscovery(peer) { + this.logger.trace(`Node ${this.node.peerId._idB58String} discovered ${peer._idB58String}`); + } + + _onPeerConnect(connection) { + this.logger.trace( + `Node ${ + this.node.peerId._idB58String + } connected to ${connection.remotePeer.toB58String()}`, + ); + } + + async findNodes(key, protocol) { + const encodedKey = new TextEncoder().encode(key); + const nodes = this.node._dht.peerRouting.getClosestPeers(encodedKey); + const result = []; + for await (const node of nodes) { + if (this.node.peerStore.peers.get(node._idB58String).protocols.includes(protocol)) { + result.push(node); + } + } + + return result; + } + + getPeers() { + return this.node.connectionManager.connections; + } + + getPeerId() { + return this.node.peerId; + } + + store(peer, key, object) { + const encodedKey = new TextEncoder().encode(key); + const encodedObject = new TextEncoder().encode(object); + const record = this._createPutRecord(encodedKey, encodedObject); + return this.node._dht._putValueToPeer(encodedKey, record, peer); + } + + _createPutRecord(key, value) { + const rec = new Record(key, value, new Date()); + return rec.serialize(); + } + + async handleMessage(protocol, handler) { + this.logger.info(`Enabling network protocol: ${protocol}`); + + this.node.handle(protocol, async (handlerProps) => { + const { stream } = handlerProps; + const remotePeerId = handlerProps.connection.remotePeer._idB58String; + const { message, valid, busy } = await this._readMessageFromStream( + stream, + this.isRequestValid.bind(this), + remotePeerId, + ); + + this.updateSessionStream( + message.header.operationId, + message.header.keywordUuid, + remotePeerId, + stream, + ); + + if (!valid) { + await this.sendMessageResponse( + protocol, + remotePeerId, + constants.NETWORK_MESSAGE_TYPES.RESPONSES.NACK, + message.header.operationId, + message.header.keywordUuid, + {}, + ); + } else if (busy) { + await this.sendMessageResponse( + protocol, + remotePeerId, + constants.NETWORK_MESSAGE_TYPES.RESPONSES.BUSY, + message.header.operationId, + message.header.keywordUuid, + {}, + ); + } else { + this.logger.debug( + `Receiving message from ${remotePeerId} to ${this.config.id}: event=${protocol}, messageType=${message.header.messageType};`, + ); + await handler(message, remotePeerId); + } + }); + } + + updateSessionStream(operationId, keywordUuid, remotePeerId, stream) { + this.logger.trace( + `Storing new session stream for remotePeerId: ${remotePeerId} with operation id: ${operationId}, keywordUuid: ${keywordUuid}`, + ); + if (!this.sessions[remotePeerId]) { + this.sessions[remotePeerId] = { + [operationId]: { + [keywordUuid]: { + stream, + }, + }, + }; + } else if (!this.sessions[remotePeerId][operationId]) { + this.sessions[remotePeerId][operationId] = { + [keywordUuid]: { + stream, + }, + }; + } else { + this.sessions[remotePeerId][operationId][keywordUuid] = { + stream, + }; + } + } + + getSessionStream(operationId, keywordUuid, remotePeerId) { + if ( + this.sessions[remotePeerId] && + this.sessions[remotePeerId][operationId] && + this.sessions[remotePeerId][operationId][keywordUuid] + ) { + this.logger.trace( + `Session found remotePeerId: ${remotePeerId}, operation id: ${operationId}, keywordUuid: ${keywordUuid}`, + ); + return this.sessions[remotePeerId][operationId][keywordUuid].stream; + } + return null; + } + + createStreamMessage(message, operationId, keywordUuid, messageType) { + return { + header: { + messageType, + operationId, + keywordUuid, + }, + data: message, + }; + } + + async sendMessage(protocol, remotePeerId, messageType, operationId, keyword, message) { + const keywordUuid = uuidv5(keyword, uuidv5.URL); + + this.logger.trace( + `Sending message to ${remotePeerId._idB58String}: event=${protocol}, messageType=${messageType}, operationId: ${operationId}, keywordUuid: ${keywordUuid}`, + ); + + // const sessionStream = this.getSessionStream(operationId, remotePeerId._idB58String); + // if (!sessionStream) { + this.logger.trace( + `Dialing remotePeerId: ${remotePeerId._idB58String} for protocol: ${protocol}`, + ); + const { stream } = await this.node.dialProtocol(remotePeerId, protocol); + // } else { + // stream = sessionStream; + // } + + this.updateSessionStream(operationId, keywordUuid, remotePeerId._idB58String, stream); + + const streamMessage = this.createStreamMessage( + message, + operationId, + keywordUuid, + messageType, + ); + + await this._sendMessageToStream(stream, streamMessage); + // if (!this.sessions[remotePeerId._idB58String]) { + // this.sessions[remotePeerId._idB58String] = { + // [operationId]: { + // stream + // } + // } + // } else { + // this.sessions[remotePeerId._idB58String][operationId] = { + // stream + // } + // } + // if (!this.sessions.sender[message.header.sessionId]) { + // this.sessions.sender[message.header.sessionId] = {}; + // } + const { message: response, valid } = await this._readMessageFromStream( + stream, + this.isResponseValid.bind(this), + remotePeerId._idB58String, + ); + this.logger.trace( + `Receiving response from ${remotePeerId._idB58String} : event=${protocol}, messageType=${response.header.messageType};`, + ); + + return valid ? response : null; + } + + async sendMessageResponse( + protocol, + remotePeerId, + messageType, + operationId, + keywordUuid, + message, + ) { + this.logger.debug( + `Sending response from ${this.config.id} to ${remotePeerId}: event=${protocol}, messageType=${messageType};`, + ); + const stream = this.getSessionStream(operationId, keywordUuid, remotePeerId); + + if (!stream) { + throw Error(`Unable to find opened stream for remotePeerId: ${remotePeerId}`); + } + + const response = this.createStreamMessage(message, operationId, keywordUuid, messageType); + + await this._sendMessageToStream(stream, response); + } + + // updateReceiverSession(header) { + // // if BUSY we expect same request, so don't update session + // if (header.messageType === constants.NETWORK_MESSAGE_TYPES.RESPONSES.BUSY) return; + // // if NACK we don't expect other requests, so delete session + // if (header.messageType === constants.NETWORK_MESSAGE_TYPES.RESPONSES.NACK) { + // if (header.sessionId) delete this.sessions.receiver[header.sessionId]; + // return; + // } + // + // // if session is new, initialise array of expected message types + // if (!this.sessions.receiver[header.sessionId].expectedMessageTypes) { + // this.sessions.receiver[header.sessionId].expectedMessageTypes = Object.keys( + // constants.NETWORK_MESSAGE_TYPES.REQUESTS, + // ); + // } + // + // // subroutine completed + // if (header.messageType === constants.NETWORK_MESSAGE_TYPES.RESPONSES.ACK) { + // // protocol operation completed, delete session + // if (this.sessions.receiver[header.sessionId].expectedMessageTypes.length <= 1) { + // this.removeSession(header.sessionId); + // } else { + // // operation not completed, update array of expected message types + // this.sessions.receiver[header.sessionId].expectedMessageTypes = + // this.sessions.receiver[header.sessionId].expectedMessageTypes.slice(1); + // } + // } + // } + + async _sendMessageToStream(stream, message) { + const stringifiedHeader = JSON.stringify(message.header); + const stringifiedData = JSON.stringify(message.data); + + const chunks = [stringifiedHeader]; + const chunkSize = 1024 * 1024; // 1 MB + + // split data into 1 MB chunks + for (let i = 0; i < stringifiedData.length; i += chunkSize) { + chunks.push(stringifiedData.slice(i, i + chunkSize)); + } + + await pipe( + chunks, + // turn strings into buffers + (source) => map(source, (string) => Buffer.from(string)), + // Encode with length prefix (so receiving side knows how much data is coming) + lp.encode(), + // Write to the stream (the sink) + stream.sink, + ); + } + + async _readMessageFromStream(stream, isMessageValid, remotePeerId) { + return pipe( + // Read from the stream (the source) + stream.source, + // Decode length-prefixed data + lp.decode(), + // Turn buffers into strings + (source) => map(source, (buf) => buf.toString()), + // Sink function + (source) => this.readMessageSink(source, isMessageValid, remotePeerId), + ); + } + + async readMessageSink(source, isMessageValid, remotePeerId) { + const message = {}; + let stringifiedData = ''; + // we expect first buffer to be header + const stringifiedHeader = (await source.next()).value; + message.header = JSON.parse(stringifiedHeader); + + // validate request / response + if (!(await isMessageValid(message.header, remotePeerId))) { + return { message, valid: false }; + } + + // business check if PROTOCOL_INIT message + if ( + message.header.messageType === constants.NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_INIT && + this.isBusy() + ) { + return { message, valid: true, busy: true }; + } + + // read data the data + for await (const chunk of source) { + stringifiedData += chunk; + } + message.data = JSON.parse(stringifiedData); + + return { message, valid: true, busy: false }; + } + + async isRequestValid(header, remotePeerId) { + // filter spam requests + if (await this.limitRequest(header, remotePeerId)) return false; + + // header well formed + if ( + !header.operationId || + !header.keywordUuid || + !header.messageType || + !Object.keys(constants.NETWORK_MESSAGE_TYPES.REQUESTS).includes(header.messageType) + ) + return false; + if (header.messageType === constants.NETWORK_MESSAGE_TYPES.REQUESTS.PROTOCOL_INIT) { + return true; + } + + return this.sessionExists(remotePeerId, header.operationId, header.keywordUuid); + } + + sessionExists() { + return true; + // return this.sessions[remotePeerId._idB58String] && this.sessions[remotePeerId._idB58String][operationId]; + } + + async isResponseValid() { + return true; + // return ( + // header.operationId && + // header.messageType && + // this.sessions[remotePeerId][header.operationId] && + // Object.keys(constants.NETWORK_MESSAGE_TYPES.RESPONSES).includes(header.messageType) + // ); + } + + removeSession(sessionId) { + if (this.sessions.sender[sessionId]) { + delete this.sessions.sender[sessionId]; + } else if (this.sessions.receiver[sessionId]) { + delete this.sessions.receiver[sessionId]; + } + } + + healthCheck() { + // TODO: broadcast ping or sent msg to yourself + const connectedNodes = this.node.connectionManager.size; + if (connectedNodes > 0) return true; + return false; + } + + async limitRequest(header, remotePeerId) { + // if (header.sessionId && this.sessions.receiver[header.sessionId]) return false; + + if (this.blackList[remotePeerId]) { + const remainingMinutes = Math.floor( + constants.NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES - + (Date.now() - this.blackList[remotePeerId]) / (1000 * 60), + ); + + if (remainingMinutes > 0) { + this.logger.debug( + `Blocking request from ${remotePeerId}. Node is blacklisted for ${remainingMinutes} minutes.`, + ); + + return true; + } + delete this.blackList[remotePeerId]; + + } + + if (await this.rateLimiter.spamDetection.limit(remotePeerId)) { + this.blackList[remotePeerId] = Date.now(); + this.logger.debug( + `Blocking request from ${remotePeerId}. Spammer detected and blacklisted for ${constants.NETWORK_API_BLACK_LIST_TIME_WINDOW_MINUTES} minutes.`, + ); + + return true; + } if (await this.rateLimiter.basicRateLimiter.limit(remotePeerId)) { + this.logger.debug( + `Blocking request from ${remotePeerId}. Max number of requests exceeded.`, + ); + + return true; + } + + return false; + } + + isBusy() { + const distinctOperations = new Set(); + for (const peerId in this.sessions) { + for (const operationId in Object.keys(this.sessions[peerId])) { + distinctOperations.add(operationId); + } + } + return toobusy(); // || distinctOperations.size > constants.MAX_OPEN_SESSIONS; + } + + getPrivateKey() { + return this.config.privateKey; + } + + getName() { + return 'Libp2p'; + } +} + +module.exports = Libp2pService; diff --git a/src/modules/network/network-module-manager.js b/src/modules/network/network-module-manager.js new file mode 100644 index 000000000..d1e47afbf --- /dev/null +++ b/src/modules/network/network-module-manager.js @@ -0,0 +1,90 @@ +const BaseModuleManager = require('../base-module-manager'); + +class NetworkModuleManager extends BaseModuleManager { + getName() { + return 'network'; + } + + async findNodes(key, protocol) { + if (this.initialized) { + return this.getImplementation().module.findNodes(key, protocol); + } + } + + getPeers() { + if (this.initialized) { + return this.getImplementation().module.getPeers(); + } + } + + /** + * Store the given key/value pair at the peer `target`. + * + * @param {String} key + * @param {Object} object - value to be stored + * @param {PeerId} target + */ + store(peer, key, object) { + if (this.initialized) { + return this.getImplementation().module.store(peer, key, object); + } + } + + async sendMessage(protocol, remotePeerId, messageType, operationId, keyword, message) { + if (this.initialized) { + return this.getImplementation().module.sendMessage( + protocol, + remotePeerId, + messageType, + operationId, + keyword, + message, + ); + } + } + + async sendMessageResponse(protocol, remotePeerId, messageType, operationId, keyword, message) { + if (this.initialized) { + return this.getImplementation().module.sendMessageResponse( + protocol, + remotePeerId, + messageType, + operationId, + keyword, + message, + ); + } + } + + handleMessage(protocol, handler, options) { + if (this.initialized) { + this.getImplementation().module.handleMessage(protocol, handler, options); + } + } + + removeSession(sessionId) { + if (this.initialized) { + this.getImplementation().module.removeSession(sessionId); + } + } + + getPeerId() { + if (this.initialized) { + return this.getImplementation().module.getPeerId(); + } + } + + getPrivateKey() { + if (this.initialized) { + return this.getImplementation().module.getPrivateKey(); + } + } + + async healthCheck() { + if (this.initialized) { + return this.getImplementation().module.healthCheck(); + } + } +} + +module.exports = NetworkModuleManager; diff --git a/src/modules/protocol-singleton-module/implementation/protocol-singleton.js b/src/modules/protocol-singleton-module/implementation/protocol-singleton.js new file mode 100644 index 000000000..9d462011d --- /dev/null +++ b/src/modules/protocol-singleton-module/implementation/protocol-singleton.js @@ -0,0 +1,3 @@ +class ProtocolSingleton {} + +module.exports = ProtocolSingleton; diff --git a/src/modules/protocol-singleton-module/protocol-singleton-module-manager.js b/src/modules/protocol-singleton-module/protocol-singleton-module-manager.js new file mode 100644 index 000000000..aaf84f280 --- /dev/null +++ b/src/modules/protocol-singleton-module/protocol-singleton-module-manager.js @@ -0,0 +1,6 @@ +const BaseModuleManager = require('../base-module-manager'); + +class ProtocolSingletonModuleManager extends BaseModuleManager { +} + +module.exports = ProtocolSingletonModuleManager; diff --git a/src/modules/repository/implementation/sequelize/migrations/20211117005500-create-commands.js b/src/modules/repository/implementation/sequelize/migrations/20211117005500-create-commands.js index faaeb2c1a..df54e2085 100644 --- a/src/modules/repository/implementation/sequelize/migrations/20211117005500-create-commands.js +++ b/src/modules/repository/implementation/sequelize/migrations/20211117005500-create-commands.js @@ -43,7 +43,7 @@ module.exports = { allowNull: false, }, message: { - type: Sequelize.STRING, + type: Sequelize.TEXT('long'), allowNull: true, }, parent_id: { @@ -55,7 +55,7 @@ module.exports = { allowNull: true, }, transactional: { - type: Sequelize.INTEGER, + type: Sequelize.BOOLEAN, allowNull: false, }, created_at: { @@ -70,7 +70,7 @@ module.exports = { }, }); }, - down: async (queryInterface, Sequelize) => { + down: async (queryInterface) => { await queryInterface.dropTable('commands'); }, }; diff --git a/src/modules/repository/implementation/sequelize/migrations/20211117005504-create-handler_ids.js b/src/modules/repository/implementation/sequelize/migrations/20211117005504-create-handler_ids.js deleted file mode 100644 index 9f717910f..000000000 --- a/src/modules/repository/implementation/sequelize/migrations/20211117005504-create-handler_ids.js +++ /dev/null @@ -1,31 +0,0 @@ -module.exports = { - up: (queryInterface, Sequelize) => queryInterface.createTable('handler_ids', { - handler_id: { - allowNull: false, - primaryKey: true, - type: Sequelize.STRING, - }, - data: { - allowNull: true, - type: Sequelize.TEXT, - }, - status: { - allowNull: false, - type: Sequelize.STRING, - }, - timestamp: { - type: Sequelize.BIGINT, - }, - created_at: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.literal('NOW()'), - }, - updated_at: { - allowNull: false, - type: Sequelize.DATE, - defaultValue: Sequelize.literal('NOW()'), - }, - }), - down: (queryInterface, Sequelize) => queryInterface.dropTable('handler_ids'), -}; diff --git a/migrations/20211117005501-create-assertions.js b/src/modules/repository/implementation/sequelize/migrations/20211117005504-create-operation_ids.js similarity index 61% rename from migrations/20211117005501-create-assertions.js rename to src/modules/repository/implementation/sequelize/migrations/20211117005504-create-operation_ids.js index 63b19534b..9a44c483e 100644 --- a/migrations/20211117005501-create-assertions.js +++ b/src/modules/repository/implementation/sequelize/migrations/20211117005504-create-operation_ids.js @@ -1,20 +1,22 @@ module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('assertions', { - hash: { - type: Sequelize.STRING, - primaryKey: true, + up: (queryInterface, Sequelize) => + queryInterface.createTable('operation_ids', { + operation_id: { allowNull: false, - }, - owner: { + primaryKey: true, type: Sequelize.STRING, }, - signature: { + data: { + allowNull: true, type: Sequelize.TEXT, }, - topics: { + status: { + allowNull: false, type: Sequelize.STRING, }, + timestamp: { + type: Sequelize.BIGINT, + }, created_at: { allowNull: false, type: Sequelize.DATE, @@ -25,9 +27,6 @@ module.exports = { type: Sequelize.DATE, defaultValue: Sequelize.literal('NOW()'), }, - }); - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('assertions'); - }, + }), + down: (queryInterface) => queryInterface.dropTable('operation_ids'), }; diff --git a/src/modules/repository/implementation/sequelize/migrations/20211117005505-update-handler_ids.js b/src/modules/repository/implementation/sequelize/migrations/20211117005505-update-handler_ids.js deleted file mode 100644 index c8496e81a..000000000 --- a/src/modules/repository/implementation/sequelize/migrations/20211117005505-update-handler_ids.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - up: (queryInterface, Sequelize) => queryInterface.changeColumn( - 'handler_ids', - 'data', - { - type: Sequelize.TEXT('long'), - allowNull: true, - }, - ), - down: (queryInterface, Sequelize) => queryInterface.changeColumn( - 'handler_ids', - 'data', - { - type: Sequelize.TEXT, - allowNull: true, - }, - ), -}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220406102807-update-assertions.js b/src/modules/repository/implementation/sequelize/migrations/20220406102807-update-assertions.js deleted file mode 100644 index cb867e9ff..000000000 --- a/src/modules/repository/implementation/sequelize/migrations/20220406102807-update-assertions.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - up: (queryInterface, Sequelize) => { - return Promise.all([queryInterface.addColumn( - 'assertions', - 'triple_store', - { - type: Sequelize.STRING, - allowNull: true, - } - ), - queryInterface.addColumn( - 'assertions', - 'status', - { - type: Sequelize.STRING, - allowNull: true, - } - )])}, - - down: (queryInterface, Sequelize) => { - return Promise.all([queryInterface.removeColumn( - 'assertions', - 'triple_store', - ), - queryInterface.removeColumn( - 'assertions', - 'status', - )])} -}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20211117005501-create-assertions.js b/src/modules/repository/implementation/sequelize/migrations/20220620100000-create-publish.js similarity index 60% rename from src/modules/repository/implementation/sequelize/migrations/20211117005501-create-assertions.js rename to src/modules/repository/implementation/sequelize/migrations/20220620100000-create-publish.js index 63b19534b..b14df7ce4 100644 --- a/src/modules/repository/implementation/sequelize/migrations/20211117005501-create-assertions.js +++ b/src/modules/repository/implementation/sequelize/migrations/20220620100000-create-publish.js @@ -1,18 +1,17 @@ module.exports = { up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('assertions', { - hash: { - type: Sequelize.STRING, + await queryInterface.createTable('publish', { + id: { + type: Sequelize.INTEGER, primaryKey: true, - allowNull: false, - }, - owner: { - type: Sequelize.STRING, + autoIncrement: true, }, - signature: { - type: Sequelize.TEXT, + operation_id: { + type: Sequelize.UUID, + allowNull: false, }, - topics: { + status: { + allowNull: false, type: Sequelize.STRING, }, created_at: { @@ -27,7 +26,7 @@ module.exports = { }, }); }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('assertions'); + down: async (queryInterface) => { + await queryInterface.dropTable('publish'); }, }; diff --git a/migrations/20211117005502-create-jobs.js b/src/modules/repository/implementation/sequelize/migrations/20220620100005-create-publish-response.js similarity index 59% rename from migrations/20211117005502-create-jobs.js rename to src/modules/repository/implementation/sequelize/migrations/20220620100005-create-publish-response.js index 8550dcd60..2fd1680b8 100644 --- a/migrations/20211117005502-create-jobs.js +++ b/src/modules/repository/implementation/sequelize/migrations/20220620100005-create-publish-response.js @@ -1,27 +1,25 @@ module.exports = { up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('jobs', { + await queryInterface.createTable('publish_response', { id: { - allowNull: false, + type: Sequelize.INTEGER, primaryKey: true, - type: Sequelize.STRING, + autoIncrement: true, }, - publisher: { - type: Sequelize.STRING, - }, - assertion_hash: { - type: Sequelize.STRING, + operation_id: { + type: Sequelize.UUID, + allowNull: false, }, - tx_hash: { + keyword: { + allowNull: false, type: Sequelize.STRING, }, - signature: { - type: Sequelize.TEXT, - }, - blockchain_id: { + status: { + allowNull: false, type: Sequelize.STRING, }, - published_to: { + message: { + allowNull: true, type: Sequelize.TEXT, }, created_at: { @@ -36,7 +34,7 @@ module.exports = { }, }); }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('jobs'); + down: async (queryInterface) => { + await queryInterface.dropTable('publish_response'); }, }; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220623125000-create-get.js b/src/modules/repository/implementation/sequelize/migrations/20220623125000-create-get.js new file mode 100644 index 000000000..b84a7d93b --- /dev/null +++ b/src/modules/repository/implementation/sequelize/migrations/20220623125000-create-get.js @@ -0,0 +1,32 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.createTable('get', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + operation_id: { + type: Sequelize.UUID, + allowNull: false, + }, + status: { + allowNull: false, + type: Sequelize.STRING, + }, + created_at: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + updated_at: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + }); + }, + down: async (queryInterface) => { + await queryInterface.dropTable('get'); + }, +}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220623125001-create-get-response.js b/src/modules/repository/implementation/sequelize/migrations/20220623125001-create-get-response.js new file mode 100644 index 000000000..c50bf0587 --- /dev/null +++ b/src/modules/repository/implementation/sequelize/migrations/20220623125001-create-get-response.js @@ -0,0 +1,40 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.createTable('get_response', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + operation_id: { + type: Sequelize.UUID, + allowNull: false, + }, + keyword: { + allowNull: false, + type: Sequelize.STRING, + }, + status: { + allowNull: false, + type: Sequelize.STRING, + }, + message: { + allowNull: true, + type: Sequelize.TEXT, + }, + created_at: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + updated_at: { + allowNull: false, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + }); + }, + down: async (queryInterface) => { + await queryInterface.dropTable('get_response'); + }, +}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20211117005502-create-jobs.js b/src/modules/repository/implementation/sequelize/migrations/20220624020509-create-event.js similarity index 59% rename from src/modules/repository/implementation/sequelize/migrations/20211117005502-create-jobs.js rename to src/modules/repository/implementation/sequelize/migrations/20220624020509-create-event.js index 8550dcd60..c697e2d33 100644 --- a/src/modules/repository/implementation/sequelize/migrations/20211117005502-create-jobs.js +++ b/src/modules/repository/implementation/sequelize/migrations/20220624020509-create-event.js @@ -1,28 +1,34 @@ module.exports = { up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('jobs', { + await queryInterface.createTable('event', { id: { - allowNull: false, + type: Sequelize.INTEGER, primaryKey: true, - type: Sequelize.STRING, + autoIncrement: true, }, - publisher: { - type: Sequelize.STRING, + operation_id: { + type: Sequelize.UUID, + allowNull: false, }, - assertion_hash: { + name: { + allowNull: false, type: Sequelize.STRING, }, - tx_hash: { + timestamp: { + allowNull: false, type: Sequelize.STRING, }, - signature: { - type: Sequelize.TEXT, + value1: { + allowNull: true, + type: Sequelize.STRING, }, - blockchain_id: { + value2: { + allowNull: true, type: Sequelize.STRING, }, - published_to: { - type: Sequelize.TEXT, + value3: { + allowNull: true, + type: Sequelize.STRING, }, created_at: { allowNull: false, @@ -36,7 +42,7 @@ module.exports = { }, }); }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('jobs'); + down: async (queryInterface) => { + await queryInterface.dropTable('event'); }, }; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220624103229-create-ability.js b/src/modules/repository/implementation/sequelize/migrations/20220624103229-create-ability.js new file mode 100644 index 000000000..3598e9dcc --- /dev/null +++ b/src/modules/repository/implementation/sequelize/migrations/20220624103229-create-ability.js @@ -0,0 +1,29 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.createTable('ability', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + name: { + type: Sequelize.STRING, + unique: true, + }, + created_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + updated_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + }); + }, + down: async (queryInterface) => { + await queryInterface.dropTable('ability'); + }, +}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220624103610-create-role.js b/src/modules/repository/implementation/sequelize/migrations/20220624103610-create-role.js new file mode 100644 index 000000000..b00793cbd --- /dev/null +++ b/src/modules/repository/implementation/sequelize/migrations/20220624103610-create-role.js @@ -0,0 +1,29 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.createTable('role', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + name: { + type: Sequelize.STRING, + unique: true, + }, + created_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + updated_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + }); + }, + down: async (queryInterface) => { + await queryInterface.dropTable('role'); + }, +}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220624103615-create-user.js b/src/modules/repository/implementation/sequelize/migrations/20220624103615-create-user.js new file mode 100644 index 000000000..13c40469d --- /dev/null +++ b/src/modules/repository/implementation/sequelize/migrations/20220624103615-create-user.js @@ -0,0 +1,36 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.createTable('user', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + name: { + type: Sequelize.STRING, + unique: true, + }, + role_id: { + type: Sequelize.INTEGER, + references: { + model: 'role', + key: 'id', + }, + }, + created_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + updated_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + }); + }, + down: async (queryInterface) => { + await queryInterface.dropTable('user'); + }, +}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220624103658-create-token.js b/src/modules/repository/implementation/sequelize/migrations/20220624103658-create-token.js new file mode 100644 index 000000000..ae0ad032a --- /dev/null +++ b/src/modules/repository/implementation/sequelize/migrations/20220624103658-create-token.js @@ -0,0 +1,44 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.createTable('token', { + id: { + allowNull: false, + primaryKey: true, + type: Sequelize.STRING, + }, + name: { + allowNull: false, + type: Sequelize.STRING, + unique: true, + }, + user_id: { + type: Sequelize.INTEGER, + references: { + model: 'user', + key: 'id', + }, + }, + expires_at: { + type: Sequelize.DATE, + allowNull: true, + }, + revoked: { + type: Sequelize.BOOLEAN, + defaultValue: false, + }, + created_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + updated_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + }); + }, + down: async (queryInterface) => { + await queryInterface.dropTable('token'); + }, +}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220624113659-create-role-ability.js b/src/modules/repository/implementation/sequelize/migrations/20220624113659-create-role-ability.js new file mode 100644 index 000000000..0ce81a409 --- /dev/null +++ b/src/modules/repository/implementation/sequelize/migrations/20220624113659-create-role-ability.js @@ -0,0 +1,39 @@ +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.createTable('role_ability', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + ability_id: { + type: Sequelize.INTEGER, + references: { + model: 'ability', + key: 'id', + }, + }, + role_id: { + type: Sequelize.INTEGER, + references: { + model: 'role', + key: 'id', + }, + }, + created_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + updated_at: { + allowNull: true, + type: Sequelize.DATE, + defaultValue: Sequelize.literal('NOW()'), + }, + }); + }, + down: async (queryInterface) => { + await queryInterface.dropTable('role_ability'); + }, +}; diff --git a/src/modules/repository/implementation/sequelize/migrations/20220628113824-add-predefined-auth-entities.js b/src/modules/repository/implementation/sequelize/migrations/20220628113824-add-predefined-auth-entities.js new file mode 100644 index 000000000..b491d95f0 --- /dev/null +++ b/src/modules/repository/implementation/sequelize/migrations/20220628113824-add-predefined-auth-entities.js @@ -0,0 +1,78 @@ +const routes = [ + 'PUBLISH', + 'PROVISION', + 'UPDATE', + 'GET', + 'SEARCH', + 'SEARCH_ASSERTION', + 'QUERY', + 'PROOFS', + 'OPERATION_RESULT', + 'INFO', +]; + +module.exports = { + up: async (queryInterface) => { + const transaction = await queryInterface.sequelize.transaction(); + try { + await queryInterface.bulkInsert( + 'ability', + routes.map((r) => ({ name: r })), + { + transaction, + }, + ); + const [abilities] = await queryInterface.sequelize.query('SELECT id from ability', { + transaction, + }); + + await queryInterface.bulkInsert( + 'role', + [ + { + name: 'ADMIN', + }, + ], + { + transaction, + }, + ); + + const [[role]] = await queryInterface.sequelize.query( + "SELECT id from role where name='ADMIN'", + { + transaction, + }, + ); + + const roleAbilities = abilities.map((e) => ({ + ability_id: e.id, + role_id: role.id, + })); + + await queryInterface.bulkInsert('role_ability', roleAbilities, { transaction }); + + await queryInterface.bulkInsert( + 'user', + [ + { + name: 'node-runner', + role_id: role.id, + }, + ], + { transaction }, + ); + + transaction.commit(); + } catch (e) { + transaction.rollback(); + throw e; + } + }, + + down: async (queryInterface) => { + queryInterface.sequelize.query('TRUNCATE TABLE role_ability;'); + queryInterface.sequelize.query('TRUNCATE TABLE role;'); + queryInterface.sequelize.query('TRUNCATE TABLE ability;'); + }, +}; diff --git a/src/modules/repository/implementation/sequelize/models/ability.js b/src/modules/repository/implementation/sequelize/models/ability.js new file mode 100644 index 000000000..880a1061c --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/ability.js @@ -0,0 +1,33 @@ +const { Model } = require('sequelize'); + +module.exports = (sequelize, DataTypes) => { + class Ability extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate() { + // define association here + } + } + Ability.init( + { + name: DataTypes.STRING, + createdAt: { + type: DataTypes.DATE, + field: 'created_at', + }, + updatedAt: { + type: DataTypes.DATE, + field: 'updated_at', + }, + }, + { + sequelize, + modelName: 'Ability', + underscored: true, + }, + ); + return Ability; +}; diff --git a/src/modules/repository/implementation/sequelize/models/assertion.js b/src/modules/repository/implementation/sequelize/models/assertion.js deleted file mode 100644 index c25660952..000000000 --- a/src/modules/repository/implementation/sequelize/models/assertion.js +++ /dev/null @@ -1,34 +0,0 @@ -const { Model } = require('sequelize'); - -module.exports = (sequelize, DataTypes) => { - class assertions extends Model { - static associate(models) { - assertions._models = models; - // define association here - } - } - assertions.init({ - hash: { - type: DataTypes.STRING, - primaryKey: true, - allowNull: false, - }, - owner: DataTypes.STRING, - signature: DataTypes.TEXT, - topics: DataTypes.STRING, - created_at: DataTypes.DATE, - updated_at: DataTypes.DATE, - triple_store: { - type: DataTypes.STRING, - allowNull: true, - }, - status: { - type: DataTypes.STRING, - allowNull: true, - }, - }, { - sequelize, - modelName: 'assertions', - }); - return assertions; -}; diff --git a/src/modules/repository/implementation/sequelize/models/commands.js b/src/modules/repository/implementation/sequelize/models/commands.js index 3ded96ca2..d415c509d 100644 --- a/src/modules/repository/implementation/sequelize/models/commands.js +++ b/src/modules/repository/implementation/sequelize/models/commands.js @@ -23,7 +23,7 @@ module.exports = (sequelize, DataTypes) => { deadline_at: DataTypes.INTEGER, period: DataTypes.INTEGER, status: DataTypes.STRING, - message: DataTypes.STRING, + message: DataTypes.TEXT, parent_id: DataTypes.UUID, transactional: DataTypes.BOOLEAN, retries: { diff --git a/src/modules/repository/implementation/sequelize/models/event.js b/src/modules/repository/implementation/sequelize/models/event.js new file mode 100644 index 000000000..4b946d2dc --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/event.js @@ -0,0 +1,25 @@ +module.exports = (sequelize, DataTypes) => { + const event = sequelize.define( + 'event', + { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + operation_id: DataTypes.UUID, + name: DataTypes.STRING, + timestamp: DataTypes.STRING, + value1: DataTypes.STRING, + value2: DataTypes.STRING, + value3: DataTypes.STRING, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, + {}, + ); + event.associate = () => { + // associations can be defined here + }; + return event; +}; diff --git a/src/modules/repository/implementation/sequelize/models/get-response.js b/src/modules/repository/implementation/sequelize/models/get-response.js new file mode 100644 index 000000000..b701b8ad0 --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/get-response.js @@ -0,0 +1,23 @@ +module.exports = (sequelize, DataTypes) => { + const get_response = sequelize.define( + 'get_response', + { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + operation_id: DataTypes.UUID, + keyword: DataTypes.STRING, + status: DataTypes.STRING, + message: DataTypes.TEXT, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, + {}, + ); + get_response.associate = () => { + // associations can be defined here + }; + return get_response; +}; diff --git a/src/modules/repository/implementation/sequelize/models/get.js b/src/modules/repository/implementation/sequelize/models/get.js new file mode 100644 index 000000000..fb26bdde0 --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/get.js @@ -0,0 +1,21 @@ +module.exports = (sequelize, DataTypes) => { + const get = sequelize.define( + 'get', + { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + operation_id: DataTypes.UUID, + status: DataTypes.STRING, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, + {}, + ); + get.associate = () => { + // associations can be defined here + }; + return get; +}; diff --git a/src/modules/repository/implementation/sequelize/models/handler_ids.js b/src/modules/repository/implementation/sequelize/models/handler_ids.js deleted file mode 100644 index ae3cca011..000000000 --- a/src/modules/repository/implementation/sequelize/models/handler_ids.js +++ /dev/null @@ -1,23 +0,0 @@ -const { v4: uuidv4 } = require('uuid'); - -module.exports = (sequelize, DataTypes) => { - const handler_ids = sequelize.define('handler_ids', { - handler_id: { - type: DataTypes.UUID, - primaryKey: true, - defaultValue: () => uuidv4(), - }, - data: DataTypes.TEXT, - status: DataTypes.STRING, - timestamp: { - type: DataTypes.BIGINT, - defaultValue: () => Date.now(), - }, - created_at: DataTypes.DATE, - updated_at: DataTypes.DATE, - }, {}); - handler_ids.associate = (models) => { - // associations can be defined here - }; - return handler_ids; -}; diff --git a/src/modules/repository/implementation/sequelize/models/jobs.js b/src/modules/repository/implementation/sequelize/models/jobs.js deleted file mode 100644 index c5c4a3294..000000000 --- a/src/modules/repository/implementation/sequelize/models/jobs.js +++ /dev/null @@ -1,30 +0,0 @@ -const { Model } = require('sequelize'); -const uuid = require('uuid'); - -module.exports = (sequelize, DataTypes) => { - class jobs extends Model { - static associate(models) { - jobs._models = models; - // define association here - } - } - jobs.init({ - id: { - type: DataTypes.UUID, - primaryKey: true, - defaultValue: () => uuid.v4(), - }, - publisher: DataTypes.STRING, - assertion_hash: DataTypes.STRING, - tx_hash: DataTypes.STRING, - signature: DataTypes.TEXT, - blockchain_id: DataTypes.STRING, - published_to: DataTypes.TEXT, - created_at: DataTypes.DATE, - updated_at: DataTypes.DATE, - }, { - sequelize, - modelName: 'jobs', - }); - return jobs; -}; diff --git a/src/modules/repository/implementation/sequelize/models/operation_ids.js b/src/modules/repository/implementation/sequelize/models/operation_ids.js new file mode 100644 index 000000000..112a3eb9c --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/operation_ids.js @@ -0,0 +1,27 @@ +const { v4: uuidv4 } = require('uuid'); + +module.exports = (sequelize, DataTypes) => { + const operation_ids = sequelize.define( + 'operation_ids', + { + operation_id: { + type: DataTypes.UUID, + primaryKey: true, + defaultValue: () => uuidv4(), + }, + data: DataTypes.TEXT, + status: DataTypes.STRING, + timestamp: { + type: DataTypes.BIGINT, + defaultValue: () => Date.now(), + }, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, + {}, + ); + operation_ids.associate = () => { + // associations can be defined here + }; + return operation_ids; +}; diff --git a/src/modules/repository/implementation/sequelize/models/publish-response.js b/src/modules/repository/implementation/sequelize/models/publish-response.js new file mode 100644 index 000000000..06f0601b8 --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/publish-response.js @@ -0,0 +1,23 @@ +module.exports = (sequelize, DataTypes) => { + const publish_response = sequelize.define( + 'publish_response', + { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + operation_id: DataTypes.UUID, + keyword: DataTypes.STRING, + status: DataTypes.STRING, + message: DataTypes.TEXT, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, + {}, + ); + publish_response.associate = () => { + // associations can be defined here + }; + return publish_response; +}; diff --git a/src/modules/repository/implementation/sequelize/models/publish.js b/src/modules/repository/implementation/sequelize/models/publish.js new file mode 100644 index 000000000..72df2db13 --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/publish.js @@ -0,0 +1,21 @@ +module.exports = (sequelize, DataTypes) => { + const publish = sequelize.define( + 'publish', + { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + }, + operation_id: DataTypes.UUID, + status: DataTypes.STRING, + created_at: DataTypes.DATE, + updated_at: DataTypes.DATE, + }, + {}, + ); + publish.associate = () => { + // associations can be defined here + }; + return publish; +}; diff --git a/src/modules/repository/implementation/sequelize/models/role-ability.js b/src/modules/repository/implementation/sequelize/models/role-ability.js new file mode 100644 index 000000000..d806544cb --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/role-ability.js @@ -0,0 +1,34 @@ +const { Model } = require('sequelize'); + +module.exports = (sequelize, DataTypes) => { + class RoleAbility extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + RoleAbility.hasOne(models.Ability, { as: 'ability' }); + RoleAbility.hasOne(models.Role, { as: 'role' }); + } + } + + RoleAbility.init( + { + createdAt: { + type: DataTypes.DATE, + field: 'created_at', + }, + updatedAt: { + type: DataTypes.DATE, + field: 'updated_at', + }, + }, + { + sequelize, + modelName: 'RoleAbility', + underscored: true, + }, + ); + return RoleAbility; +}; diff --git a/src/modules/repository/implementation/sequelize/models/role.js b/src/modules/repository/implementation/sequelize/models/role.js new file mode 100644 index 000000000..2ee2f8f5e --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/role.js @@ -0,0 +1,37 @@ +const { Model } = require('sequelize'); + +module.exports = (sequelize, DataTypes) => { + class Role extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + Role.belongsToMany(models.Ability, { + as: 'abilities', + foreignKey: 'ability_id', + through: models.RoleAbility, + }); + } + } + Role.init( + { + name: DataTypes.STRING, + createdAt: { + type: DataTypes.DATE, + field: 'created_at', + }, + updatedAt: { + type: DataTypes.DATE, + field: 'updated_at', + }, + }, + { + sequelize, + modelName: 'Role', + underscored: true, + }, + ); + return Role; +}; diff --git a/src/modules/repository/implementation/sequelize/models/token.js b/src/modules/repository/implementation/sequelize/models/token.js new file mode 100644 index 000000000..7cf92e64b --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/token.js @@ -0,0 +1,45 @@ +const { Model } = require('sequelize'); + +module.exports = (sequelize, DataTypes) => { + class Token extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + Token.belongsTo(models.User, { as: 'user' }); + } + } + Token.init( + { + id: { type: DataTypes.STRING, primaryKey: true }, + revoked: DataTypes.BOOLEAN, + userId: { + type: DataTypes.INTEGER, + field: 'user_id', + }, + name: { + type: DataTypes.STRING, + }, + expiresAt: { + type: DataTypes.DATE, + field: 'expires_at', + }, + createdAt: { + type: DataTypes.DATE, + field: 'created_at', + }, + updatedAt: { + type: DataTypes.DATE, + field: 'updated_at', + }, + }, + { + sequelize, + modelName: 'Token', + underscored: true, + }, + ); + return Token; +}; diff --git a/src/modules/repository/implementation/sequelize/models/user.js b/src/modules/repository/implementation/sequelize/models/user.js new file mode 100644 index 000000000..7daf0d947 --- /dev/null +++ b/src/modules/repository/implementation/sequelize/models/user.js @@ -0,0 +1,37 @@ +const { Model } = require('sequelize'); + +module.exports = (sequelize, DataTypes) => { + class User extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + User.hasMany(models.Token, { as: 'tokens' }); + User.hasOne(models.Role, { as: 'role' }); + } + } + User.init( + { + name: { + type: DataTypes.STRING, + unique: true, + }, + createdAt: { + type: DataTypes.DATE, + field: 'created_at', + }, + updatedAt: { + type: DataTypes.DATE, + field: 'updated_at', + }, + }, + { + sequelize, + modelName: 'User', + underscored: true, + }, + ); + return User; +}; diff --git a/src/modules/repository/implementation/sequelize/sequelize-repository.js b/src/modules/repository/implementation/sequelize/sequelize-repository.js index 29a03e34d..22a6d46cc 100644 --- a/src/modules/repository/implementation/sequelize/sequelize-repository.js +++ b/src/modules/repository/implementation/sequelize/sequelize-repository.js @@ -3,6 +3,7 @@ const { exec } = require('child_process'); const path = require('path'); const fs = require('fs'); const Sequelize = require('sequelize'); +const { OPERATION_ID_STATUS } = require('../../../../constants/constants'); class SequelizeRepository { async initialize(config, logger) { @@ -12,12 +13,17 @@ class SequelizeRepository { this.setEnvParameters(); await this.createDatabaseIfNotExists(); await this.runMigrations(); + this.models = await this.loadModels(); } setEnvParameters() { process.env.SEQUELIZE_REPOSITORY_USER = this.config.user; - process.env.SEQUELIZE_REPOSITORY_PASSWORD = this.config.password; + const useEnvPassword = + process.env.REPOSITORY_PASSWORD && process.env.REPOSITORY_PASSWORD !== ''; + process.env.SEQUELIZE_REPOSITORY_PASSWORD = useEnvPassword + ? process.env.REPOSITORY_PASSWORD + : this.config.password; process.env.SEQUELIZE_REPOSITORY_DATABASE = this.config.database; process.env.SEQUELIZE_REPOSITORY_HOST = this.config.host; process.env.SEQUELIZE_REPOSITORY_PORT = this.config.port; @@ -25,20 +31,25 @@ class SequelizeRepository { } async createDatabaseIfNotExists() { - const connection = mysql.createConnection({ - host: this.config.host, - port: this.config.port, - user: this.config.user, - password: this.config.password, + const connection = await mysql.createConnection({ + host: process.env.SEQUELIZE_REPOSITORY_HOST, + port: process.env.SEQUELIZE_REPOSITORY_PORT, + user: process.env.SEQUELIZE_REPOSITORY_USER, + password: process.env.SEQUELIZE_REPOSITORY_PASSWORD, }); - connection.query(`CREATE DATABASE IF NOT EXISTS \`${this.config.database}\`;`); + // todo remove drop!!! + // await connection.promise().query(`DROP DATABASE IF EXISTS \`${this.config.database}\`;`); + await connection + .promise() + .query(`CREATE DATABASE IF NOT EXISTS \`${this.config.database}\`;`); } async runMigrations() { return new Promise((resolve, reject) => { const configurationPath = path.join(__dirname, 'config', 'sequelizeConfig.js'); + const migrationFolderPath = path.join(__dirname, 'migrations'); const migrate = exec( - `npx sequelize --config=${configurationPath} db:migrate`, + `npx sequelize --config=${configurationPath} --migrations-path=${migrationFolderPath} db:migrate`, { env: process.env }, (err) => (err ? reject(err) : resolve()), ); @@ -55,15 +66,16 @@ class SequelizeRepository { // disable automatic timestamps this.config.define = { timestamps: false, + freezeTableName: true, }; const sequelize = new Sequelize( - this.config.database, - this.config.user, - this.config.password, + process.env.SEQUELIZE_REPOSITORY_DATABASE, + process.env.SEQUELIZE_REPOSITORY_USER, + process.env.SEQUELIZE_REPOSITORY_PASSWORD, this.config, ); const models = {}; - fs.readdirSync(modelsDirectory) + (await fs.promises.readdir(modelsDirectory)) .filter((file) => file.indexOf('.') !== 0 && file.slice(-3) === '.js') .forEach((file) => { // eslint-disable-next-line global-require,import/no-dynamic-require @@ -85,8 +97,237 @@ class SequelizeRepository { return models; } - async createHandlerIdRecord(handlerData) { - await this.models.handler_ids.create(handlerData); + transaction(execFn) { + return this.models.sequelize.transaction(async (t) => execFn(t)); + } + + // COMMAND + async updateCommand(update, opts) { + await this.models.commands.update(update, opts); + } + + async destroyCommand(name) { + await this.models.commands.destroy({ + where: { + name: { [Sequelize.Op.eq]: name }, + }, + }); + } + + async createCommand(command, opts) { + return this.models.commands.create(command, opts); + } + + async getCommandsWithStatus(statusArray, excludeNameArray) { + return this.models.commands.findAll({ + where: { + status: { + [Sequelize.Op.in]: statusArray, + }, + name: { [Sequelize.Op.notIn]: excludeNameArray }, + }, + }); + } + + async getCommandWithId(id) { + return this.models.commands.findOne({ + where: { + id, + }, + }); + } + + // OPERATION_ID + async createOperationIdRecord(handlerData) { + const handlerRecord = await this.models.operation_ids.create(handlerData); + return handlerRecord; + } + + async getOperationIdRecord(operationId) { + const handlerRecord = await this.models.operation_ids.findOne({ + where: { + operation_id: operationId, + }, + }); + return handlerRecord; + } + + async updateOperationIdRecord(data, operationId) { + await this.models.operation_ids.update(data, { + where: { + operation_id: operationId, + }, + }); + } + + async getNumberOfNodesFoundForPublish(publishId) { + return this.models.publish.findOne({ + attributes: ['nodes_found'], + where: { + id: publishId, + }, + }); + } + + async createOperationRecord(operation, operationId, status) { + return this.models[operation].create({ + operation_id: operationId, + status, + }); + } + + async getOperationStatus(operation, operationId) { + return this.models[operation].findOne({ + attributes: ['status'], + where: { + operation_id: operationId, + }, + }); + } + + async updateOperationStatus(operation, operationId, status) { + await this.models[operation].update( + { status }, + { + where: { + operation_id: operationId, + }, + }, + ); + } + + async createOperationResponseRecord(status, operation, operationId, keyword, message) { + await this.models[`${operation}_response`].create({ + status, + message, + operation_id: operationId, + keyword, + }); + } + + async getNumberOfOperationResponses(operation, operationId) { + return this.models[`${operation}_response`].count({ + where: { + operation_id: operationId, + }, + }); + } + + async getOperationResponsesStatuses(operation, operationId) { + return this.models[`${operation}_response`].findAll({ + attributes: ['status', 'keyword'], + where: { + operation_id: operationId, + }, + }); + } + + async countOperationResponseStatuses(operation, operationId) { + return this.models[`${operation}_response`].findAll({ + attributes: [ + 'status', + [Sequelize.fn('COUNT', Sequelize.col('status')), 'count_status'], + ], + group: 'status', + where: { + operation_id: operationId, + }, + }); + } + + // EVENT + async createEventRecord(operationId, name, timestamp, value1, value2, value3) { + return this.models.event.create({ + operation_id: operationId, + name, + timestamp, + value1, + value2, + value3, + }); + } + + async getUnpublishedEvents() { + // events without COMPLETE/FAILED status which are older than 30min + // are also considered finished + const minutes = 5; + + let operationIds = await this.models.event.findAll({ + raw: true, + attributes: [Sequelize.fn('DISTINCT', Sequelize.col('operation_id'))], + where: { + [Sequelize.Op.or]: { + name: { + [Sequelize.Op.in]: [ + OPERATION_ID_STATUS.COMPLETED, + OPERATION_ID_STATUS.FAILED, + ], + }, + timestamp: { + [Sequelize.Op.lt]: Sequelize.literal( + `(UNIX_TIMESTAMP()*1000 - 1000*60*${minutes})`, + ), + }, + }, + }, + }); + + operationIds = operationIds.map((e) => e.operation_id); + + return this.models.event.findAll({ + where: { + operation_id: { + [Sequelize.Op.in]: operationIds, + }, + }, + }); + } + + async destroyEvents(ids) { + await this.models.event.destroy({ + where: { + id: { + [Sequelize.Op.in]: ids, + }, + }, + }); + } + + async getUser(username) { + return this.models.User.findOne({ + where: { + name: username, + }, + }); + } + + async saveToken(tokenId, userId, tokenName, expiresAt) { + return this.models.Token.create({ + id: tokenId, + userId, + expiresAt, + name: tokenName, + }); + } + + async isTokenRevoked(tokenId) { + const token = await this.models.Token.findByPk(tokenId); + + return token && token.revoked; + } + + async getTokenAbilities(tokenId) { + const abilities = await this.models.sequelize.query( + `SELECT a.name FROM token t +INNER JOIN user u ON t.user_id = u.id +INNER JOIN role r ON u.role_id = u.id +INNER JOIN role_ability ra on r.id = ra.role_id +INNER JOIN ability a on ra.ability_id = a.id +WHERE t.id=$tokenId;`, + { bind: { tokenId }, type: Sequelize.QueryTypes.SELECT }, + ); + + return abilities.map((e) => e.name); } } diff --git a/src/modules/repository/repository-module-manager.js b/src/modules/repository/repository-module-manager.js index 5ed749a9d..1c217d541 100644 --- a/src/modules/repository/repository-module-manager.js +++ b/src/modules/repository/repository-module-manager.js @@ -5,9 +5,185 @@ class RepositoryModuleManager extends BaseModuleManager { return 'repository'; } - async createHandlerIdRecord(handlerData) { + transaction(execFn) { if (this.initialized) { - return this.getImplementation().module.createHandlerIdRecord(handlerData); + return this.getImplementation().module.transaction(execFn); + } + } + + // COMMANDS + async updateCommand(update, opts) { + if (this.initialized) { + return this.getImplementation().module.updateCommand(update, opts); + } + } + + async destroyCommand(name) { + if (this.initialized) { + return this.getImplementation().module.destroyCommand(name); + } + } + + async createCommand(command, opts) { + if (this.initialized) { + return this.getImplementation().module.createCommand(command, opts); + } + } + + async getCommandsWithStatus(statusArray, excludeNameArray = []) { + if (this.initialized) { + return this.getImplementation().module.getCommandsWithStatus( + statusArray, + excludeNameArray, + ); + } + } + + async getCommandWithId(id) { + if (this.initialized) { + return this.getImplementation().module.getCommandWithId(id); + } + } + + // OPERATION ID TABLE + async createOperationIdRecord(handlerData) { + if (this.initialized) { + return this.getImplementation().module.createOperationIdRecord(handlerData); + } + } + + async updateOperationIdRecord(data, operationId) { + if (this.initialized) { + return this.getImplementation().module.updateOperationIdRecord(data, operationId); + } + } + + async getOperationIdRecord(operationId) { + if (this.initialized) { + return this.getImplementation().module.getOperationIdRecord(operationId); + } + } + + // publish table + async createOperationRecord(operation, operationId, status) { + if (this.initialized) { + return this.getImplementation().module.createOperationRecord( + operation, + operationId, + status, + ); + } + } + + async getOperationStatus(operation, operationId) { + if (this.initialized) { + return this.getImplementation().module.getOperationStatus(operation, operationId); + } + } + + async updateOperationStatus(operation, operationId, status) { + if (this.initialized) { + return this.getImplementation().module.updateOperationStatus( + operation, + operationId, + status, + ); + } + } + + async createOperationResponseRecord(status, operation, operationId, keyword, errorMessage) { + if (this.initialized) { + return this.getImplementation().module.createOperationResponseRecord( + status, + operation, + operationId, + keyword, + errorMessage, + ); + } + } + + async getNumberOfOperationResponses(operation, operationId) { + if (this.initialized) { + return this.getImplementation().module.getNumberOfOperationResponses( + operation, + operationId, + ); + } + } + + async getOperationResponsesStatuses(operation, operationId) { + if (this.initialized) { + return this.getImplementation().module.getOperationResponsesStatuses( + operation, + operationId, + ); + } + } + + async countOperationResponseStatuses(operation, operationId) { + if (this.initialized) { + return this.getImplementation().module.countOperationResponseStatuses( + operation, + operationId, + ); + } + } + + // EVENT + async createEventRecord( + operationId, + name, + timestamp, + value1 = null, + value2 = null, + value3 = null, + ) { + if (this.initialized) { + return this.getImplementation().module.createEventRecord( + operationId, + name, + timestamp, + value1, + value2, + value3, + ); + } + } + + async getUnpublishedEvents() { + if (this.initialized) { + return this.getImplementation().module.getUnpublishedEvents(); + } + } + + async destroyEvents(ids) { + if (this.initialized) { + return this.getImplementation().module.destroyEvents(ids); + } + } + + async getUser(username) { + if (this.initialized) { + return this.getImplementation().module.getUser(username); + } + } + + async saveToken(tokenId, userId, tokenName, expiresAt) { + if (this.initialized) { + return this.getImplementation().module.saveToken(tokenId, userId, tokenName, expiresAt); + } + } + + async isTokenRevoked(tokenId) { + if (this.initialized) { + return this.getImplementation().module.isTokenRevoked(tokenId); + } + } + + async getTokenAbilities(tokenId) { + if (this.initialized) { + return this.getImplementation().module.getTokenAbilities(tokenId); } } } diff --git a/src/modules/triple-store/implementation/ot-blazegraph/ot-blazegraph.js b/src/modules/triple-store/implementation/ot-blazegraph/ot-blazegraph.js new file mode 100644 index 000000000..d1c160a10 --- /dev/null +++ b/src/modules/triple-store/implementation/ot-blazegraph/ot-blazegraph.js @@ -0,0 +1,27 @@ +const axios = require('axios'); +const OtTripleStore = require('../ot-triple-store'); + +class OtBlazegraph extends OtTripleStore { + initializeSparqlEndpoints(url) { + this.sparqlEndpoint = `${url}/sparql`; + this.sparqlEndpointUpdate = `${url}/sparql`; + } + + async healthCheck() { + try { + const response = await axios.get(`${this.config.url}/status`, {}); + if (response.data !== null) { + return true; + } + return false; + } catch (e) { + return false; + } + } + + getName() { + return 'OtBlazegraph'; + } +} + +module.exports = OtBlazegraph; diff --git a/src/modules/triple-store/implementation/ot-fuseki/ot-fuseki.js b/src/modules/triple-store/implementation/ot-fuseki/ot-fuseki.js new file mode 100644 index 000000000..052e81694 --- /dev/null +++ b/src/modules/triple-store/implementation/ot-fuseki/ot-fuseki.js @@ -0,0 +1,27 @@ +const axios = require('axios'); +const OtTripleStore = require('../ot-triple-store'); + +class OtFuseki extends OtTripleStore { + initializeSparqlEndpoints(url, repository) { + this.sparqlEndpoint = `${url}/${repository}/sparql`; + this.sparqlEndpointUpdate = `${url}/${repository}/update`; + } + + async healthCheck() { + try { + const response = await axios.get(`${this.config.url}/$/ping`, {}); + if (response.data !== null) { + return true; + } + return false; + } catch (e) { + return false; + } + } + + getName() { + return 'OtFuseki'; + } +} + +module.exports = OtFuseki; diff --git a/external/graphdb-service.js b/src/modules/triple-store/implementation/ot-graphdb/ot-graphdb.js similarity index 54% rename from external/graphdb-service.js rename to src/modules/triple-store/implementation/ot-graphdb/ot-graphdb.js index 2491dc91f..ed84c5afb 100644 --- a/external/graphdb-service.js +++ b/src/modules/triple-store/implementation/ot-graphdb/ot-graphdb.js @@ -3,22 +3,12 @@ const { RepositoryConfig, RepositoryType } = require('graphdb').repository; const { RDFMimeType } = require('graphdb').http; const axios = require('axios'); const { execSync } = require('child_process'); -const SparqlqueryService = require('./sparqlquery-service'); +const OtTripleStore = require('../ot-triple-store'); -class GraphdbService extends SparqlqueryService { - constructor(config) { - super({ - sparqlEndpoint: `${config.url}/repositories/${config.name}`, - sparqlEndpointUpdate: `${config.url}/repositories/${config.name}/statements`, - }); - this.url = config.url; - this.name = config.name; - } - - async initialize(logger) { - await super.initialize(logger); - this.logger = logger; - const serverConfig = new ServerClientConfig(this.url) +class OtGraphdb extends OtTripleStore { + async initialize(config, logger) { + await super.initialize(config, logger); + const serverConfig = new ServerClientConfig(this.config.url) .setTimeout(40000) .setHeaders({ Accept: RDFMimeType.N_QUADS, @@ -26,25 +16,43 @@ class GraphdbService extends SparqlqueryService { .setKeepAlive(true); const server = new GraphDBServerClient(serverConfig); - const exists = await server.hasRepository(this.name); + const exists = await server.hasRepository(this.config.repository); if (!exists) { - const newConfig = new RepositoryConfig( - this.name, - '', - new Map(), - '', - 'Repo title', - RepositoryType.FREE, - ); - // Use the configuration to create new repository - await server.createRepository(newConfig); + try { + await server.createRepository( + new RepositoryConfig( + this.config.repository, + '', + new Map(), + '', + 'Repo title', + RepositoryType.FREE, + ), + ); + } catch (e) { + await server.createRepository( + new RepositoryConfig( + this.config.repository, + '', + {}, + 'graphdb:SailRepository', + 'Repo title', + 'graphdb', + ), + ); + } } } + initializeSparqlEndpoints(url, repository) { + this.sparqlEndpoint = `${url}/repositories/${repository}`; + this.sparqlEndpointUpdate = `${url}/repositories/${repository}/statements`; + } + async healthCheck() { try { const response = await axios.get( - `${this.url}/repositories/${this.name}/health`, + `${this.config.url}/repositories/${this.config.repository}/health`, {}, { auth: { @@ -81,4 +89,4 @@ class GraphdbService extends SparqlqueryService { } } -module.exports = GraphdbService; +module.exports = OtGraphdb; diff --git a/src/modules/triple-store/implementation/ot-triple-store.js b/src/modules/triple-store/implementation/ot-triple-store.js new file mode 100644 index 000000000..f31946b5f --- /dev/null +++ b/src/modules/triple-store/implementation/ot-triple-store.js @@ -0,0 +1,209 @@ +const Engine = require('@comunica/query-sparql').QueryEngine; +const { setTimeout } = require('timers/promises'); +const { SCHEMA_CONTEXT } = require('../../../constants/constants'); +const constants = require('./triple-store-constants'); + +class OtTripleStore { + async initialize(config, logger) { + this.config = config; + this.logger = logger; + this.initializeSparqlEndpoints(this.config.url, this.config.repository); + + let ready = await this.healthCheck(); + let retries = 0; + while (!ready && retries < constants.TRIPLE_STORE_CONNECT_MAX_RETRIES) { + retries += 1; + this.logger.warn( + `Cannot connect to Triple store (${this.getName()}), retry number: ${retries}/${ + constants.TRIPLE_STORE_CONNECT_MAX_RETRIES + }. Retrying in ${constants.TRIPLE_STORE_CONNECT_RETRY_FREQUENCY} seconds.`, + ); + /* eslint-disable no-await-in-loop */ + await setTimeout(constants.TRIPLE_STORE_CONNECT_RETRY_FREQUENCY * 1000); + ready = await this.healthCheck(); + } + if (retries === constants.TRIPLE_STORE_CONNECT_MAX_RETRIES) { + this.logger.error( + `Triple Store (${this.getName()}) not available, max retries reached.`, + ); + process.exit(1); + } + + this.queryEngine = new Engine(); + this.filtertype = { + KEYWORD: 'keyword', + KEYWORDPREFIX: 'keywordPrefix', + TYPES: 'types', + ISSUERS: 'issuers', + }; + const sources = [ + { + type: 'sparql', + value: `${this.sparqlEndpoint}`, + }, + ]; + + this.insertContext = { + sources, + destination: { + type: 'sparql', + value: `${this.sparqlEndpointUpdate}`, + }, + }; + this.queryContext = { + sources, + }; + } + + initializeSparqlEndpoints() { + // overridden by subclasses + return true; + } + + async updateAssetsGraph(ual, assetNquads) { + const insertion = ` + PREFIX schema: <${SCHEMA_CONTEXT}> + DELETE {<${ual}> schema:latestAssertion ?o} + WHERE { + GRAPH { + ?s ?p ?o . + <${ual}> schema:latestAssertion ?o . + } + }; + INSERT DATA { + GRAPH { + ${assetNquads} + } + }`; + await this.queryEngine.queryVoid(insertion, this.insertContext); + } + + async insertAssertion(assertionId, assertionNquads) { + const exists = await this.assertionExists(assertionId); + + if (!exists) { + const insertion = ` + PREFIX schema: <${SCHEMA_CONTEXT}> + INSERT DATA { + GRAPH { + ${assertionNquads} + } + }`; + await this.queryEngine.queryVoid(insertion, this.insertContext); + } + } + + async construct(query) { + const result = await this.executeQuery(query); + return result; + } + + async ask(query) { + const result = await this.queryEngine.queryBoolean(query, this.queryContext); + return result; + } + + async assertionExists(graphName) { + const escapedGraphName = this.cleanEscapeCharacter(graphName); + const query = `ASK WHERE { GRAPH { ?s ?p ?o } }`; + + return this.ask(query); + } + + async get(graphName) { + const escapedGraphName = this.cleanEscapeCharacter(graphName); + + const query = `PREFIX schema: <${SCHEMA_CONTEXT}> + CONSTRUCT { ?s ?p ?o } + WHERE { + { + GRAPH + { + ?s ?p ?o . + } + } + }`; + return this.construct(query); + } + + async healthCheck() { + return true; + } + + async executeQuery(query) { + const result = await this.queryEngine.query(query, this.queryContext); + const { data } = await this.queryEngine.resultToString( + result, + 'application/n-quads', + this.queryContext, + ); + let nquads = ''; + for await (const nquad of data) { + nquads += nquad; + } + return nquads; + } + + async execute(query) { + const result = await this.queryEngine.query(query, this.queryContext); + const { data } = await this.queryEngine.resultToString(result); + let response = ''; + for await (const chunk of data) { + response += chunk; + } + return JSON.parse(response); + } + + cleanEscapeCharacter(query) { + return query.replace(/['|[\]\\]/g, '\\$&'); + } + + createFilterParameter(queryParameter, type) { + const queryParam = this.cleanEscapeCharacter(queryParameter); + + switch (type) { + case this.filtertype.KEYWORD: + return `FILTER (lcase(?keyword) = '${queryParam}')`; + case this.filtertype.KEYWORDPREFIX: + return `FILTER contains(lcase(?keyword),'${queryParam}')`; + case this.filtertype.ISSUERS: + return `FILTER (?issuer IN (${JSON.stringify(queryParam).slice(1, -1)}))`; + case this.filtertype.TYPES: + return `FILTER (?type IN (${JSON.stringify(queryParam).slice(1, -1)}))`; + default: + return ''; + } + } + + createLimitQuery(options) { + if (!options.limit) { + return ''; + } + const queryLimit = Number(options.limit); + if (Number.isNaN(queryLimit) || !Number.isInteger(queryLimit)) { + this.logger.error(`Failed creating Limit query: ${options.limit} is not a number`); + throw new Error('Limit is not a number'); + } else if (Number.isInteger(options.limit) && options.limit < 0) { + this.logger.error(`Failed creating Limit query: ${options.limit} is negative number`); + throw new Error('Limit is not a number'); + } + return `LIMIT ${queryLimit}`; + } + + isBoolean(param) { + return typeof param === 'boolean' || ['true', 'false'].includes(param); + } + + async reinitialize() { + const ready = await this.healthCheck(); + if (!ready) { + this.logger.warn( + `Cannot connect to Triple store (${this.getName()}), check if your triple store is running.`, + ); + } else { + this.implementation.initialize(this.logger); + } + } +} + +module.exports = OtTripleStore; diff --git a/src/modules/triple-store/implementation/triple-store-constants.js b/src/modules/triple-store/implementation/triple-store-constants.js new file mode 100644 index 000000000..c6174e101 --- /dev/null +++ b/src/modules/triple-store/implementation/triple-store-constants.js @@ -0,0 +1,23 @@ +/** + * @constant {number} DID_PREFIX + * - DID prefix for graph database + */ +exports.DID_PREFIX = 'did:dkg'; + +/** + * @constant {number} TRIPLE_STORE_CONNECT_MAX_RETRIES + * - Maximum retries for connecting to triple store + */ + exports.TRIPLE_STORE_CONNECT_MAX_RETRIES = 10; + + /** + * @constant {number} TRIPLE_STORE_CONNECT_RETRY_FREQUENCY + * - Wait interval between retries for connecting to triple store + */ + exports.TRIPLE_STORE_CONNECT_RETRY_FREQUENCY = 10; // 10 seconds + + /** + * @constant {number} TRIPLE_STORE_QUEUE_LIMIT + * - Triple store queue limit + */ + exports.TRIPLE_STORE_QUEUE_LIMIT = 5000; diff --git a/src/modules/triple-store/triple-store-module-manager.js b/src/modules/triple-store/triple-store-module-manager.js new file mode 100644 index 000000000..226831c1c --- /dev/null +++ b/src/modules/triple-store/triple-store-module-manager.js @@ -0,0 +1,79 @@ +const BaseModuleManager = require('../base-module-manager'); + +class TripleStoreModuleManager extends BaseModuleManager { + getName() { + return 'tripleStore'; + } + + async insertAssertion(assertionId, assertionNquads) { + if (this.initialized) { + return this.getImplementation().module.insertAssertion(assertionId, assertionNquads); + } + } + + async updateAssetsGraph(ual, assetNquads) { + if (this.initialized) { + return this.getImplementation().module.updateAssetsGraph(ual, assetNquads); + } + } + + async assertionExists(uri) { + if (this.initialized) { + return this.getImplementation().module.assertionExists(uri); + } + } + + async get(uri) { + if (this.initialized) { + return this.getImplementation().module.get(uri); + } + } + + async assertionsByAsset(uri) { + if (this.initialized) { + return this.getImplementation().module.assertionsByAsset(uri); + } + } + + async findAssetsByKeyword(query, options, localQuery) { + if (this.initialized) { + return this.getImplementation().module.findAssetsByKeyword(query, options, localQuery); + } + } + + async findAssertionsByKeyword(query, options, localQuery) { + if (this.initialized) { + return this.getImplementation().module.findAssertionsByKeyword( + query, + options, + localQuery, + ); + } + } + + async construct(query) { + if (this.initialized) { + return this.getImplementation().module.construct(query); + } + } + + async findAssertions(nquads) { + if (this.initialized) { + return this.getImplementation().module.findAssertions(nquads); + } + } + + async select(query) { + if (this.initialized) { + return this.getImplementation().module.select(query); + } + } + + async healthCheck() { + if (this.initialized) { + return this.getImplementation().module.healthCheck(); + } + } +} + +module.exports = TripleStoreModuleManager; diff --git a/external/BytesUtilities.js b/src/modules/validation/bytes-utilities.js similarity index 65% rename from external/BytesUtilities.js rename to src/modules/validation/bytes-utilities.js index d3b04c9fb..d9a39cbe6 100644 --- a/external/BytesUtilities.js +++ b/src/modules/validation/bytes-utilities.js @@ -11,11 +11,11 @@ class BytesUtilities { if (number == null) { return null; } - number = number.toLowerCase(); - if (!number.startsWith('0x')) { - return `0x${number}`; + const lowerCaseNumber = number.toLowerCase(); + if (!lowerCaseNumber.startsWith('0x')) { + return `0x${lowerCaseNumber}`; } - return number; + return lowerCaseNumber; } /** @@ -27,11 +27,11 @@ class BytesUtilities { if (number == null) { return null; } - number = number.toLowerCase(); - if (number.startsWith('0x')) { - return number.substring(2); + const lowerCaseNumber = number.toLowerCase(); + if (lowerCaseNumber.startsWith('0x')) { + return lowerCaseNumber.substring(2); } - return number; + return lowerCaseNumber; } /** @@ -56,16 +56,20 @@ class BytesUtilities { } static fromString(str) { - const bn = `0x${(str.slice(0, 2) === '0x' ? new BN(str.slice(2), 16) : new BN(str, 10)).toString('hex')}`; + const bn = `0x${(str.slice(0, 2) === '0x' + ? new BN(str.slice(2), 16) + : new BN(str, 10) + ).toString('hex')}`; return bn === '0x0' ? '0x' : bn; } static fromNat(bn) { - return bn === '0x0' ? '0x' : bn.length % 2 === 0 ? bn : `0x0${bn.slice(2)}`; + const intermediateNumber = bn.length % 2 === 0 ? bn : `0x0${bn.slice(2)}`; + return bn === '0x0' ? '0x' : intermediateNumber; } static pad(l, hex) { - return hex.length === (l * 2) + 2 ? hex : BytesUtilities.pad(l, `0x0${hex.slice(2)}`); + return hex.length === l * 2 + 2 ? hex : BytesUtilities.pad(l, `0x0${hex.slice(2)}`); } static flatten(a) { @@ -73,7 +77,7 @@ class BytesUtilities { } static slice(i, j, bs) { - return `0x${bs.slice((i * 2) + 2, (j * 2) + 2)}`; + return `0x${bs.slice(i * 2 + 2, j * 2 + 2)}`; } static length(a) { @@ -81,11 +85,11 @@ class BytesUtilities { } static isHexStrict(hex) { - return ((_.isString(hex) || _.isNumber(hex)) && /^(-)?0x[0-9a-f]*$/i.test(hex)); + return (_.isString(hex) || _.isNumber(hex)) && /^(-)?0x[0-9a-f]*$/i.test(hex); } - static hexToBytes(hex) { - hex = hex.toString(16); + static hexToBytes(number) { + let hex = number.toString(16); if (!BytesUtilities.isHexStrict(hex)) { throw new Error(`Given value "${hex}" is not a valid hex string.`); @@ -95,7 +99,7 @@ class BytesUtilities { let bytes; let c; for (bytes = [], c = 0; c < hex.length; c += 2) { - bytes.push(parseInt(hex.substr(c, 2), 16)); + bytes.push(parseInt(hex.substring(c, 2), 16)); } return bytes; } diff --git a/src/modules/validation/implementation/merkle-validation.js b/src/modules/validation/implementation/merkle-validation.js new file mode 100644 index 000000000..bdc387854 --- /dev/null +++ b/src/modules/validation/implementation/merkle-validation.js @@ -0,0 +1,31 @@ +const keccak256 = require('keccak256'); +const web3 = require('web3'); +const { MerkleTree } = require('merkletreejs'); +const { calculateRoot } = require('assertion-tools'); + +class MerkleValidation { + async initialize(config, logger) { + this.config = config; + this.logger = logger; + } + + calculateRoot(assertion) { + return calculateRoot(assertion); + } + + // TODO move to assertion-tools + getMerkleProof(nquadsArray, challenge) { + nquadsArray.sort(); + + const leaves = nquadsArray.map((element, index) => + keccak256(web3.utils.encodePacked(keccak256(element), index)), + ); + const tree = new MerkleTree(leaves, keccak256, { sortPairs: true }); + + const proof = tree.getProof(leaves[parseInt(challenge, 10)]); + + return { leaf: leaves[parseInt(challenge, 10)], proof: proof.map((x) => x.data) }; + } +} + +module.exports = MerkleValidation; diff --git a/src/modules/validation/validation-module-manager.js b/src/modules/validation/validation-module-manager.js new file mode 100644 index 000000000..fd2cb14bf --- /dev/null +++ b/src/modules/validation/validation-module-manager.js @@ -0,0 +1,21 @@ +const BaseModuleManager = require('../base-module-manager'); + +class ValidationModuleManager extends BaseModuleManager { + getName() { + return 'validation'; + } + + calculateRoot(assertion) { + if (this.initialized) { + return this.getImplementation().module.calculateRoot(assertion); + } + } + + getMerkleProof(assertion, index) { + if (this.initialized) { + return this.getImplementation().module.getMerkleProof(assertion, index); + } + } +} + +module.exports = ValidationModuleManager; diff --git a/src/service/auth-service.js b/src/service/auth-service.js new file mode 100644 index 000000000..d1a7846de --- /dev/null +++ b/src/service/auth-service.js @@ -0,0 +1,145 @@ +const ipLib = require('ip'); +const jwtUtil = require('./util/jwt-util'); + +module.exports = class AuthService { + constructor(ctx) { + this._authConfig = ctx.config.auth; + this._repository = ctx.repositoryModuleManager; + this._logger = ctx.logger; + } + + /** + * Authenticate users based on provided ip and token + * @param ip + * @param token + * @returns {boolean} + */ + async authenticate(ip, token) { + const isWhitelisted = this._isIpWhitelisted(ip); + const isTokenValid = await this._isTokenValid(token); + + const isAuthenticated = isWhitelisted && isTokenValid; + + if (!isAuthenticated) { + this._logMessage('Received unauthenticated request.'); + } + + return isAuthenticated; + } + + /** + * Checks whether user whose token is provided has abilities for system operation + * @param token + * @param systemOperation + * @returns {Promise} + */ + async isAuthorized(token, systemOperation) { + if (!this._authConfig.tokenBasedAuthEnabled) { + return true; + } + + const tokenId = jwtUtil.getPayload(token).jti; + const abilities = await this._repository.getTokenAbilities(tokenId); + + const isAuthorized = abilities.includes(systemOperation); + + const logMessage = isAuthorized + ? `Token ${tokenId} is successfully authenticated and authorized.` + : `Received unauthorized request.`; + + this._logMessage(logMessage); + + return isAuthorized; + } + + /** + * Determines whether operation is listed in config.auth.publicOperations + * @param operationName + * @returns {boolean} + */ + isPublicOperation(operationName) { + if (!Array.isArray(this._authConfig.publicOperations)) { + return false; + } + + return this._authConfig.publicOperations.includes(operationName); + } + + /** + * Validates token structure and revoked status + * If ot-node is configured not to do a token based auth, it will return true + * @param token + * @returns {boolean} + * @private + */ + async _isTokenValid(token) { + if (!this._authConfig.tokenBasedAuthEnabled) { + return true; + } + + if (!jwtUtil.validateJWT(token)) { + return false; + } + + const isRevoked = await this._isTokenRevoked(token); + + return isRevoked !== null && !isRevoked; + } + + /** + * Checks whether provided ip is whitelisted in config + * Returns false if ip based auth is disabled + * @param reqIp + * @returns {boolean} + * @private + */ + _isIpWhitelisted(reqIp) { + if (!this._authConfig.ipBasedAuthEnabled) { + return true; + } + + for (const whitelistedIp of this._authConfig.ipWhitelist) { + let isEqual = false; + + try { + isEqual = ipLib.isEqual(reqIp, whitelistedIp); + } catch (e) { + // if ip is not valid IP isEqual should remain false + } + + if (isEqual) { + return true; + } + } + + return false; + } + + /** + * Checks whether provided token is revoked + * Returns false if token based auth is disabled + * @param token + * @returns {Promise|boolean} + * @private + */ + _isTokenRevoked(token) { + if (!this._authConfig.tokenBasedAuthEnabled) { + return false; + } + + const tokenId = jwtUtil.getPayload(token).jti; + + return this._repository.isTokenRevoked(tokenId); + } + + /** + * Logs message if loggingEnabled is set to true + * @param message + * @private + */ + _logMessage(message) { + if (this._authConfig.loggingEnabled) { + this._logger.info(`[AUTH] ${message}`); + } + } +}; diff --git a/src/service/data-service.js b/src/service/data-service.js new file mode 100644 index 000000000..d750bbf9b --- /dev/null +++ b/src/service/data-service.js @@ -0,0 +1,46 @@ +const jsonld = require('jsonld'); +const { SCHEMA_CONTEXT } = require('../constants/constants'); + +const ALGORITHM = 'URDNA2015'; +const FORMAT = 'application/n-quads'; + +class DataService { + constructor(ctx) { + this.config = ctx.config; + this.logger = ctx.logger; + } + + async toNQuads(content, inputFormat) { + const options = { + algorithm: ALGORITHM, + format: FORMAT, + }; + + if (inputFormat) { + options.inputFormat = inputFormat; + } + + const canonized = await jsonld.canonize(content, options); + + return canonized.split('\n').filter((x) => x !== ''); + } + + async compact(content) { + const result = await jsonld.compact(content, { + '@context': SCHEMA_CONTEXT, + }); + + return result; + } + + async canonize(content) { + const nquads = await this.toNQuads(content); + if (nquads && nquads.length === 0) { + throw new Error('File format is corrupted, no n-quads extracted.'); + } + + return nquads; + } +} + +module.exports = DataService; diff --git a/modules/service/dependency-injection.js b/src/service/dependency-injection.js similarity index 79% rename from modules/service/dependency-injection.js rename to src/service/dependency-injection.js index d5f0ae878..66e732dda 100644 --- a/modules/service/dependency-injection.js +++ b/src/service/dependency-injection.js @@ -8,12 +8,10 @@ class DependencyInjection { container.loadModules( [ - 'modules/controller/**/*.js', - 'modules/service/**/*.js', - 'modules/command/**/*.js', - 'modules/manager/**/*.js', - 'modules/worker/worker-pool.js', 'src/controller/**/*.js', + 'src/service/*.js', + 'src/commands/**/**/*.js', + 'src/commands/*.js', 'src/modules/base-module-manager.js', 'src/modules/**/*module-manager.js', ], diff --git a/src/service/file-service.js b/src/service/file-service.js new file mode 100644 index 000000000..6aa54c433 --- /dev/null +++ b/src/service/file-service.js @@ -0,0 +1,96 @@ +const path = require('path'); +const { mkdir, writeFile, readFile, unlink, stat } = require('fs/promises'); +const appRootPath = require('app-root-path'); + +const MIGRATION_FOLDER_NAME = 'migrations'; + +class FileService { + constructor(ctx) { + this.config = ctx.config; + this.logger = ctx.logger; + } + + getFileExtension(fileName) { + return path.extname(fileName).toLowerCase(); + } + + /** + * Write contents to file + * @param directory + * @param filename + * @param data + * @returns {Promise} + */ + async writeContentsToFile(directory, filename, data) { + this.logger.debug(`Saving file with name: ${filename} in directory: ${directory}`); + await mkdir(directory, { recursive: true }); + const fullpath = path.join(directory, filename); + await writeFile(fullpath, data); + return fullpath; + } + + readFileOnPath(filePath) { + return this._readFile(filePath, false); + } + + /** + * Loads JSON data from file + * @returns {Promise} + * @private + */ + loadJsonFromFile(filePath) { + return this._readFile(filePath, true); + } + + async fileExists(filePath) { + try { + await stat(filePath); + return true; + } catch (e) { + return false; + } + } + + async _readFile(filePath, convertToJSON = false) { + this.logger.debug( + `Reading file on path: ${filePath}, converting to json: ${convertToJSON}`, + ); + try { + const data = await readFile(filePath); + return convertToJSON ? JSON.parse(data) : data.toString(); + } catch (e) { + throw Error(`File doesn't exist on file path: ${filePath}`); + } + } + + async removeFile(filePath) { + this.logger.debug(`Removing file on path: ${filePath}`); + await unlink(filePath); + return true; + } + + getDataFolderPath() { + if (process.env.NODE_ENV === 'testnet' || process.env.NODE_ENV === 'mainnet') { + return path.join(appRootPath.path, '..', this.config.appDataPath); + } + return path.join(appRootPath.path, this.config.appDataPath); + } + + getUpdateFilePath() { + return path.join(this.getDataFolderPath(), 'UPDATED'); + } + + getMigrationFolderPath() { + return path.join(this.getDataFolderPath(), MIGRATION_FOLDER_NAME); + } + + getOperationIdCachePath() { + return path.join(this.getDataFolderPath(), 'operation_id_cache'); + } + + getOperationIdDocumentPath(operationId) { + return path.join(this.getOperationIdCachePath(), operationId); + } +} + +module.exports = FileService; diff --git a/src/service/get-service.js b/src/service/get-service.js new file mode 100644 index 000000000..9a5dadb10 --- /dev/null +++ b/src/service/get-service.js @@ -0,0 +1,94 @@ +const { Mutex } = require('async-mutex'); +const OperationService = require('./operation-service'); +const { + GET_REQUEST_STATUS, + OPERATION_ID_STATUS, + GET_STATUS, + NETWORK_PROTOCOLS, + ERROR_TYPE, +} = require('../constants/constants'); + +class GetService extends OperationService { + constructor(ctx) { + super(ctx); + + this.dataService = ctx.dataService; + this.tripleStoreModuleManager = ctx.tripleStoreModuleManager; + + this.operationName = 'get'; + this.networkProtocol = NETWORK_PROTOCOLS.GET; + this.operationRequestStatus = GET_REQUEST_STATUS; + this.operationStatus = GET_STATUS; + this.errorType = ERROR_TYPE.GET.GET_ERROR; + this.completedStatuses = [ + OPERATION_ID_STATUS.GET.GET_FETCH_FROM_NODES_END, + OPERATION_ID_STATUS.GET.GET_END, + OPERATION_ID_STATUS.COMPLETED, + ]; + this.operationMutex = new Mutex(); + } + + async processResponse(command, responseStatus, responseData, errorMessage = null) { + const { operationId, numberOfFoundNodes, numberOfNodesInBatch, leftoverNodes, keyword } = + command.data; + + const keywordsStatuses = await this.getResponsesStatuses( + responseStatus, + errorMessage, + operationId, + keyword, + ); + + const { completedNumber, failedNumber } = keywordsStatuses[keyword]; + const numberOfResponses = completedNumber + failedNumber; + this.logger.debug( + `Processing ${this.networkProtocol} response for operationId: ${operationId}, keyword: ${keyword}. Total number of nodes: ${numberOfFoundNodes}, number of nodes in batch: ${numberOfNodesInBatch} number of leftover nodes: ${leftoverNodes.length}, number of responses: ${numberOfResponses}, Completed: ${completedNumber}, Failed: ${failedNumber}`, + ); + + if (completedNumber === 1) { + await this.markOperationAsCompleted( + operationId, + { assertion: responseData.nquads }, + this.completedStatuses, + ); + this.logResponsesSummary(completedNumber, failedNumber); + } else if ( + completedNumber < 1 && + (numberOfFoundNodes === failedNumber || failedNumber % numberOfNodesInBatch === 0) + ) { + if (leftoverNodes.length === 0) { + await this.markOperationAsCompleted( + operationId, + { + message: 'Unable to find assertion on the network!', + }, + this.completedStatuses, + ); + this.logResponsesSummary(completedNumber, failedNumber); + } else { + await this.scheduleOperationForLeftoverNodes(command.data, leftoverNodes); + } + } + } + + async localGet(assertionId, operationId) { + this.logger.debug(`Getting assertion: ${assertionId} for operationId: ${operationId}`); + + let nquads = await this.tripleStoreModuleManager.get(assertionId); + nquads = await this.dataService.toNQuads(nquads, 'application/n-quads'); + + this.logger.debug( + `Assertion: ${assertionId} for operationId: ${operationId} ${ + nquads.length ? '' : 'not' + } found in local database.`, + ); + + if (nquads.length) { + this.logger.debug(`Number of n-quads retrieved from the database : ${nquads.length}`); + } + + return nquads; + } +} + +module.exports = GetService; diff --git a/src/service/json-schema-service.js b/src/service/json-schema-service.js new file mode 100644 index 000000000..3720f21bd --- /dev/null +++ b/src/service/json-schema-service.js @@ -0,0 +1,23 @@ +const publishSchema = require('../controller/v1/request-schema/publish-schema'); +const getSchema = require('../controller/v1/request-schema/get-schema'); +const searchSchema = require('../controller/v1/request-schema/search-schema'); + +class JsonSchemaService { + constructor(ctx) { + this.blockchainModuleManager = ctx.blockchainModuleManager; + } + + publishSchema() { + return publishSchema(this.blockchainModuleManager.getImplementationsNames()); + } + + getSchema() { + return getSchema(); + } + + searchSchema() { + return searchSchema(); + } +} + +module.exports = JsonSchemaService; diff --git a/src/service/operation-id-service.js b/src/service/operation-id-service.js new file mode 100644 index 000000000..468f338d8 --- /dev/null +++ b/src/service/operation-id-service.js @@ -0,0 +1,110 @@ +const validator = require('validator'); + +class OperationIdService { + constructor(ctx) { + this.logger = ctx.logger; + this.fileService = ctx.fileService; + this.repositoryModuleManager = ctx.repositoryModuleManager; + this.eventEmitter = ctx.eventEmitter; + + this.memoryCachedHandlersData = {}; + } + + async generateOperationId(status) { + const operationIdObject = await this.repositoryModuleManager.createOperationIdRecord({ + status, + }); + const operationId = operationIdObject.operation_id; + this.emitChangeEvent(status, operationId); + this.logger.debug(`Generated operation id for request ${operationId}`); + return operationId; + } + + async getOperationIdRecord(operationId) { + const operationIdRecord = await this.repositoryModuleManager.getOperationIdRecord( + operationId, + ); + return operationIdRecord; + } + + operationIdInRightFormat(operationId) { + return validator.isUUID(operationId); + } + + async updateOperationIdStatus(operationId, status, errorMessage = null, errorType = null) { + const response = { + status, + }; + + if (errorMessage !== null) { + this.logger.debug(`Marking operation id ${operationId} as failed`); + response.data = JSON.stringify({ errorMessage, errorType }); + await this.removeOperationIdCache(operationId); + } + + this.emitChangeEvent(status, operationId, errorMessage, errorType); + + await this.repositoryModuleManager.updateOperationIdRecord(response, operationId); + } + + async updateOperationIdData(data, operationId) { + await this.repositoryModuleManager.updateOperationIdRecord(data, operationId); + } + + emitChangeEvent(status, operationId, errorMessage = null, errorType = null) { + const timestamp = Date.now(); + const eventName = 'operation_status_changed'; + + const eventData = { + lastEvent: status, + operationId, + timestamp, + value1: errorMessage, + value2: errorType, + }; + + this.eventEmitter.emit(eventName, eventData); + } + + async cacheOperationIdData(operationId, data) { + this.logger.debug(`Caching data for operation id: ${operationId} in file`); + const operationIdCachePath = this.fileService.getOperationIdCachePath(); + + await this.fileService.writeContentsToFile( + operationIdCachePath, + operationId, + JSON.stringify(data), + ); + + this.memoryCachedHandlersData[operationId] = data; + } + + async getCachedOperationIdData(operationId) { + if (this.memoryCachedHandlersData[operationId]) { + this.logger.debug(`Reading operation id: ${operationId} cached data from memory`); + return this.memoryCachedHandlersData[operationId]; + } + + this.logger.debug(`Reading operation id: ${operationId} cached data from file`); + const documentPath = this.fileService.getOperationIdDocumentPath(operationId); + let data; + if (await this.fileService.fileExists(documentPath)) { + data = await this.fileService.loadJsonFromFile(documentPath); + } + return data; + } + + async removeOperationIdCache(operationId) { + this.logger.debug(`Removing operation id: ${operationId} cached data`); + const operationIdCachePath = this.fileService.getOperationIdDocumentPath(operationId); + await this.fileService.removeFile(operationIdCachePath); + this.removeOperationIdMemoryCache(operationId); + } + + removeOperationIdMemoryCache(operationId) { + this.logger.debug(`Removing operation id: ${operationId} cached data from memory`); + delete this.memoryCachedHandlersData[operationId]; + } +} + +module.exports = OperationIdService; diff --git a/src/service/operation-service.js b/src/service/operation-service.js new file mode 100644 index 000000000..beab3d9d1 --- /dev/null +++ b/src/service/operation-service.js @@ -0,0 +1,112 @@ +const { OPERATION_ID_STATUS } = require('../constants/constants'); + +class OperationService { + constructor(ctx) { + this.config = ctx.config; + this.logger = ctx.logger; + this.repositoryModuleManager = ctx.repositoryModuleManager; + this.operationIdService = ctx.operationIdService; + this.commandExecutor = ctx.commandExecutor; + } + + getOperationName() { + return this.operationName; + } + + getNetworkProtocol() { + return this.networkProtocol; + } + + getOperationRequestStatus() { + return this.operationRequestStatus; + } + + getOperationStatus() { + return this.operationStatus; + } + + async getResponsesStatuses(responseStatus, errorMessage, operationId, keyword) { + const self = this; + let responses = 0; + await this.operationMutex.runExclusive(async () => { + await self.repositoryModuleManager.createOperationResponseRecord( + responseStatus, + this.operationName, + operationId, + keyword, + errorMessage, + ); + responses = await self.repositoryModuleManager.getOperationResponsesStatuses( + this.operationName, + operationId, + ); + }); + + const keywordsStatuses = {}; + responses.forEach((response) => { + if (!keywordsStatuses[response.keyword]) + keywordsStatuses[response.keyword] = { failedNumber: 0, completedNumber: 0 }; + + if (response.status === this.operationRequestStatus.FAILED) { + keywordsStatuses[response.keyword].failedNumber += 1; + } else { + keywordsStatuses[response.keyword].completedNumber += 1; + } + }); + + return keywordsStatuses; + } + + async markOperationAsCompleted(operationId, responseData, endStatuses) { + this.logger.info(`Finalizing ${this.networkProtocol} for operationId: ${operationId}`); + + await this.repositoryModuleManager.updateOperationStatus( + this.operationName, + operationId, + this.operationStatus.COMPLETED, + ); + + await this.operationIdService.cacheOperationIdData(operationId, responseData); + + for (const status of endStatuses) { + // eslint-disable-next-line no-await-in-loop + await this.operationIdService.updateOperationIdStatus(operationId, status); + } + } + + async markOperationAsFailed(operationId, message) { + this.logger.info(`${this.networkProtocol} for operationId: ${operationId} failed.`); + + await this.repositoryModuleManager.updateOperationStatus( + this.operationName, + operationId, + this.operationStatus.FAILED, + ); + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.FAILED, + message, + this.errorType, + ); + } + + async scheduleOperationForLeftoverNodes(commandData, leftoverNodes) { + await this.commandExecutor.add({ + name: `${this.operationName}ScheduleMessagesCommand`, + delay: 0, + data: { ...commandData, leftoverNodes }, + transactional: false, + }); + } + + logResponsesSummary(completedNumber, failedNumber) { + this.logger.info( + `Total number of responses: ${ + failedNumber + completedNumber + }, failed: ${failedNumber}, completed: ${completedNumber}`, + ); + } +} + +module.exports = OperationService; diff --git a/src/service/publish-service.js b/src/service/publish-service.js new file mode 100644 index 000000000..404c4a985 --- /dev/null +++ b/src/service/publish-service.js @@ -0,0 +1,138 @@ +const { Mutex } = require('async-mutex'); +const { formatAssertion } = require('assertion-tools'); +const OperationService = require('./operation-service'); +const { + OPERATION_ID_STATUS, + PUBLISH_REQUEST_STATUS, + PUBLISH_STATUS, + NETWORK_PROTOCOLS, + ERROR_TYPE, + SCHEMA_CONTEXT, +} = require('../constants/constants'); + +class PublishService extends OperationService { + constructor(ctx) { + super(ctx); + this.ualService = ctx.ualService; + this.blockchainModuleManager = ctx.blockchainModuleManager; + this.tripleStoreModuleManager = ctx.tripleStoreModuleManager; + this.validationModuleManager = ctx.validationModuleManager; + this.dataService = ctx.dataService; + + this.operationName = 'publish'; + this.networkProtocol = NETWORK_PROTOCOLS.STORE; + this.operationRequestStatus = PUBLISH_REQUEST_STATUS; + this.operationStatus = PUBLISH_STATUS; + this.errorType = ERROR_TYPE.PUBLISH.PUBLISH_ERROR; + this.completedStatuses = [ + OPERATION_ID_STATUS.PUBLISH.PUBLISH_REPLICATE_END, + OPERATION_ID_STATUS.PUBLISH.PUBLISH_END, + OPERATION_ID_STATUS.COMPLETED, + ]; + this.operationMutex = new Mutex(); + } + + async processResponse(command, responseStatus, responseData, errorMessage = null) { + const { operationId, numberOfFoundNodes, leftoverNodes, numberOfNodesInBatch, keyword } = + command.data; + + const keywordsStatuses = await this.getResponsesStatuses( + responseStatus, + errorMessage, + operationId, + keyword, + ); + + const { completedNumber, failedNumber } = keywordsStatuses[keyword]; + const numberOfResponses = completedNumber + failedNumber; + this.logger.debug( + `Processing ${this.networkProtocol} response for operationId: ${operationId}, keyword: ${keyword}. Total number of nodes: ${numberOfFoundNodes}, number of nodes in batch: ${numberOfNodesInBatch} number of leftover nodes: ${leftoverNodes.length}, number of responses: ${numberOfResponses}, Completed: ${completedNumber}, Failed: ${failedNumber}, minimum replication factor: ${this.config.minimumReplicationFactor}`, + ); + + if (completedNumber === this.config.minimumReplicationFactor) { + let allCompleted = true; + for (const key in keywordsStatuses) { + if (keywordsStatuses[key].completedNumber < this.config.minimumReplicationFactor) { + allCompleted = false; + break; + } + } + if (allCompleted) { + await this.markOperationAsCompleted(operationId, {}, this.completedStatuses); + this.logResponsesSummary(completedNumber, failedNumber); + this.logger.info( + `Publish with operation id: ${operationId} with status: ${ + this.completedStatuses[this.completedStatuses.length - 1] + }`, + ); + } + } else if ( + completedNumber < this.config.minimumReplicationFactor && + (numberOfFoundNodes === numberOfResponses || + numberOfResponses % numberOfNodesInBatch === 0) + ) { + if (leftoverNodes.length === 0) { + await this.markOperationAsFailed(operationId, 'Not replicated to enough nodes!'); + this.logResponsesSummary(completedNumber, failedNumber); + } else { + await this.scheduleOperationForLeftoverNodes(command.data, leftoverNodes); + } + } + } + + async getAssertion(ual) { + this.logger.info(`Getting assertion for ual: ${ual}`); + + const { blockchain, contract, tokenId } = this.ualService.resolveUAL(ual); + const assertionId = await this.blockchainModuleManager.getLatestCommitHash( + blockchain, + contract, + tokenId, + ); + + return assertionId; + } + + async validateAssertion(assertionId, operationId) { + this.logger.info(`Validating assertionId: ${assertionId}`); + + const { assertion } = await this.operationIdService.getCachedOperationIdData(operationId); + const calculatedAssertionId = this.validationModuleManager.calculateRoot(assertion); + + if (assertionId !== calculatedAssertionId) { + throw Error( + `Invalid root hash. Received value from blockchain: ${assertionId}, calculated: ${calculatedAssertionId}`, + ); + } + + this.logger.info(`Assertion integrity validated!`); + } + + async localStore(ual, assertionId, operationId) { + const { assertion } = await this.operationIdService.getCachedOperationIdData(operationId); + const { blockchain, contract, tokenId } = this.ualService.resolveUAL(ual); + + const assertionGraphName = `assertion:${assertionId}`; + + const assetNquads = await formatAssertion({ + '@context': SCHEMA_CONTEXT, + '@id': ual, + blockchain, + contract, + tokenId, + assertion: { '@id': assertionGraphName }, + latestAssertion: { '@id': assertionGraphName }, + }); + + this.logger.info(`Inserting assertion with ual: ${ual} in database.`); + + await Promise.all([ + this.tripleStoreModuleManager.updateAssetsGraph(ual, assetNquads.join('\n')), + this.tripleStoreModuleManager.insertAssertion(assertionId, assertion.join('\n')), + ]); + + this.logger.info(`Assertion ${ual} has been successfully inserted!`); + } +} + +module.exports = PublishService; diff --git a/src/service/search-service.js b/src/service/search-service.js new file mode 100644 index 000000000..471669b49 --- /dev/null +++ b/src/service/search-service.js @@ -0,0 +1,32 @@ +const { OPERATION_ID_STATUS } = require('../constants/constants'); + +class SearchService { + constructor(ctx) { + this.logger = ctx.logger; + + this.operationIdService = ctx.operationIdService; + this.repositoryModuleManager = ctx.repositoryModuleManager; + this.commandExecutor = ctx.commandExecutor; + } + + async processSearchResponse(command, responseData) { + const { operationId } = command.data; + + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.SEARCH_ASSERTIONS.SEARCH_END, + ); + await this.operationIdService.updateOperationIdStatus( + operationId, + OPERATION_ID_STATUS.SEARCH_ASSERTIONS.COMPLETED, + ); + + let data = await this.operationIdService.getCachedOperationIdData(operationId); + + data = [...new Set([...data, ...responseData])]; + + await this.operationIdService.cacheOperationIdData(operationId, data); + } +} + +module.exports = SearchService; diff --git a/src/service/telemetry-injection-service.js b/src/service/telemetry-injection-service.js new file mode 100644 index 000000000..54e061237 --- /dev/null +++ b/src/service/telemetry-injection-service.js @@ -0,0 +1,36 @@ +class TelemetryInjectionService { + constructor(ctx) { + this.logger = ctx.logger; + this.config = ctx.config; + this.eventEmitter = ctx.eventEmitter; + this.repositoryModuleManager = ctx.repositoryModuleManager; + } + + initialize() { + this.listenOnEvents(); + } + + listenOnEvents() { + this.eventEmitter.on('operation_status_changed', (eventData) => { + this.repositoryModuleManager.createEventRecord( + eventData.operationId, + eventData.lastEvent, + eventData.timestamp, + eventData.value1, + eventData.value2, + ); + }); + } + + async getUnpublishedEvents() { + return this.repositoryModuleManager.getUnpublishedEvents(); + } + + async removePublishedEvents(events) { + const ids = events.map((event) => event.id); + + await this.repositoryModuleManager.destroyEvents(ids); + } +} + +module.exports = TelemetryInjectionService; diff --git a/src/service/ual-service.js b/src/service/ual-service.js new file mode 100644 index 000000000..ffb28673e --- /dev/null +++ b/src/service/ual-service.js @@ -0,0 +1,44 @@ +/* eslint-disable no-restricted-globals */ +class UALService { + constructor(config, logger) { + this.config = config; + this.logger = logger; + } + + deriveUAL(blockchain, contract, tokenId) { + return `did:${blockchain.toLowerCase()}:${contract.toLowerCase()}/${tokenId}`; + } + + isUAL(ual) { + const segments = ual.split(':'); + if (!segments || !segments.length || segments.length !== 3) return false; + + const blockchainSegments = segments[2].split('/'); + if (!blockchainSegments || !blockchainSegments.length || blockchainSegments.length < 2) + return false; + + return !isNaN(blockchainSegments[1]); + } + + resolveUAL(ual) { + const segments = ual.split(':'); + const blockchainSegments = segments[2].split('/'); + + if ( + segments.length !== 3 || + blockchainSegments.length < 2 || + isNaN(blockchainSegments[1]) + ) { + throw new Error(`UAL doesn't have correct format: ${ual}`); + } + + return { + blockchain: segments[1], + contract: blockchainSegments[0], + tokenId: blockchainSegments[1], + assertionId: blockchainSegments.length > 2 ? blockchainSegments[2] : null, + }; + } +} + +module.exports = UALService; diff --git a/src/service/util/jwt-util.js b/src/service/util/jwt-util.js new file mode 100644 index 000000000..5308cae5a --- /dev/null +++ b/src/service/util/jwt-util.js @@ -0,0 +1,67 @@ +const jwt = require('jsonwebtoken'); +const { validate } = require('uuid'); + +class JwtUtil { + constructor() { + this._secret = process.env.JWT_SECRET; + } + + /** + * Generates new JWT token + * @param uuid uuid from token table + * @param expiresIn optional parameter. accepts values for ms package (https://www.npmjs.com/package/ms) + * @returns {string|null} + */ + generateJWT(uuid, expiresIn = null) { + if (!validate(uuid)) { + return null; + } + + const options = { + jwtid: uuid, + }; + + if (expiresIn) { + options.expiresIn = expiresIn; + } + + return jwt.sign({}, this._secret, options); + } + + /** + * Validates JWT token + * @param {string} token + * @returns {boolean} + */ + validateJWT(token) { + try { + jwt.verify(token, this._secret); + } catch (e) { + return false; + } + + return true; + } + + /** + * Returns JWT payload + * @param {string} token + * @returns {*} + */ + getPayload(token) { + return jwt.decode(token); + } + + /** + * Decodes token + * @param token + * @returns {{payload: any, signature: *, header: *}|*} + */ + decode(token) { + return jwt.decode(token, { complete: true }); + } +} + +const jwtUtil = new JwtUtil(); + +module.exports = jwtUtil; diff --git a/modules/worker/l1-worker.js b/src/worker/l1-worker.js similarity index 62% rename from modules/worker/l1-worker.js rename to src/worker/l1-worker.js index 1e129e17a..4705b7740 100644 --- a/modules/worker/l1-worker.js +++ b/src/worker/l1-worker.js @@ -13,8 +13,8 @@ async function toNQuads(data, inputFormat) { const options = { algorithm: 'URDNA2015', format: 'application/n-quads', - } - if(inputFormat) { + }; + if (inputFormat) { options.inputFormat = inputFormat; } const canonized = await jsonld.canonize(data, options); @@ -24,16 +24,17 @@ async function toNQuads(data, inputFormat) { function fromNQuads(nquads, context, frame) { return new Promise((accept, reject) => { - jsonld.fromRDF(nquads.join('\n'), { - algorithm: 'URDNA2015', - format: 'application/n-quads', - }) - .then((json) => jsonld.frame(json, frame)) - .then((json) => jsonld.compact(json, context)) - .then((result) => { - accept(result); - }) - .catch((err) => reject(err)); + jsonld + .fromRDF(nquads.join('\n'), { + algorithm: 'URDNA2015', + format: 'application/n-quads', + }) + .then((json) => jsonld.frame(json, frame)) + .then((json) => jsonld.compact(json, context)) + .then((result) => { + accept(result); + }) + .catch((err) => reject(err)); }); } diff --git a/modules/worker/worker-pool.js b/src/worker/worker-pool.js similarity index 93% rename from modules/worker/worker-pool.js rename to src/worker/worker-pool.js index 1aa0681df..66d530656 100644 --- a/modules/worker/worker-pool.js +++ b/src/worker/worker-pool.js @@ -9,7 +9,8 @@ class WorkerPool { offload(fn, args) { return new Promise((accept, reject) => { - this.pool.exec(fn, args) + this.pool + .exec(fn, args) .then((result) => { accept(result); }) diff --git a/supervisord.conf b/supervisord.conf deleted file mode 100644 index 31a48556c..000000000 --- a/supervisord.conf +++ /dev/null @@ -1,15 +0,0 @@ -[supervisord] -nodaemon=true -directory=/ -logfile=/dev/null -logfile_maxbytes=0 -loglevel=warn - -[rpcinterface:supervisor] -supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface - -[program:otnode] -command=bash -c "nodemon --quiet index.js" -redirect_stderr=true -stdout_logfile=/dev/fd/1 -stdout_logfile_maxbytes=0 diff --git a/test/bdd/features/release.feature b/test/bdd/features/release.feature index 8a563500e..0a1fab325 100644 --- a/test/bdd/features/release.feature +++ b/test/bdd/features/release.feature @@ -11,6 +11,8 @@ Feature: Release related tests @release Scenario: Node is able to publish on the network, expect status completed on publish result Given I setup 4 nodes + And I override configuration for node 1 for parameter hubContractAddres = 0x123567 + And I start the nodes When I call publish on node 1 with validAssertion with keywords: | keyword 1 | keyword 2 | And I wait for last publish to finalize diff --git a/test/bdd/steps/api/info.js b/test/bdd/steps/api/info.js index 84e249c6a..5190d0761 100644 --- a/test/bdd/steps/api/info.js +++ b/test/bdd/steps/api/info.js @@ -3,7 +3,7 @@ const assert = require('assert'); let info = {}; -When(/^I call info route on node (\d+)/, { timeout: 120000 }, async function (node) { +When(/^I call info route on node (\d+)/, { timeout: 120000 }, async function infoRouteCall (node) { // todo validate node number this.logger.log('I call info route on node: ', node); info = await this.state.nodes[node - 1].client.info(); diff --git a/test/bdd/steps/api/publish.js b/test/bdd/steps/api/publish.js index 452f27484..151ed7c37 100644 --- a/test/bdd/steps/api/publish.js +++ b/test/bdd/steps/api/publish.js @@ -1,13 +1,13 @@ -const { When, Then, Given } = require('@cucumber/cucumber'); +const { When, Given } = require('@cucumber/cucumber'); const { expect, assert } = require('chai'); -const sleep = require('sleep-async')().Promise; +const { setTimeout } = require('timers/promises'); const assertions = require('./datasets/assertions.json'); const utilities = require('../../../utilities/utilities'); When( /^I call publish on node (\d+) with ([^"]*) with keywords:*$/, { timeout: 120000 }, - async function (node, assertionName, keywords) { + async function publish (node, assertionName, keywords) { this.logger.log('I call publish route successfully'); expect( !!assertions[assertionName], @@ -21,18 +21,18 @@ When( .catch((error) => { assert.fail(`Error while trying to publish assertion. ${error}`); }); - const handlerId = result.data.handler_id; + const operationId = result.data.operation_id; this.state.lastPublishData = { nodeId: node - 1, - handlerId, + operationId, keywords: parsedKeywords, assertion: assertions[assertionName], }; }, ); -Given('I wait for last publish to finalize', { timeout: 120000 }, async function () { +Given('I wait for last publish to finalize', { timeout: 120000 }, async function publishFinalize () { this.logger.log('I wait for last publish to finalize'); expect( !!this.state.lastPublishData, @@ -44,11 +44,11 @@ Given('I wait for last publish to finalize', { timeout: 120000 }, async function const maxRetryCount = 2; while (loopForPublishResult) { this.logger.log( - `Getting publish result for handler id: ${publishData.handlerId} on node: ${publishData.nodeId}`, + `Getting publish result for operation id: ${publishData.operationId} on node: ${publishData.nodeId}`, ); // eslint-disable-next-line no-await-in-loop const publishResult = await this.state.nodes[publishData.nodeId].client - .getResult(publishData.handlerId, 'publish') + .getResult(publishData.operationId, 'publish') .catch((error) => { assert.fail(`Error while trying to get publish result assertion. ${error}`); }); @@ -62,7 +62,7 @@ Given('I wait for last publish to finalize', { timeout: 120000 }, async function } else { retryCount += 1; // eslint-disable-next-line no-await-in-loop - await sleep.sleep(5000); + await setTimeout(5000); } } }); @@ -70,7 +70,7 @@ Given('I wait for last publish to finalize', { timeout: 120000 }, async function Given( /Last publish finished with status: ([COMPLETED|FAILED]+)$/, { timeout: 120000 }, - async function (status) { + async function lastPublishFinished (status) { this.logger.log(`Last publish finished with status: ${status}`); expect( !!this.state.lastPublishData, @@ -87,6 +87,6 @@ Given( }, ); -// Then('The returned handler_id is a valid uuid', () => { -// assert.equal(uuid.validate(handlerId), true); +// Then('The returned operation_id is a valid uuid', () => { +// assert.equal(uuid.validate(operationId), true); // }); diff --git a/test/bdd/steps/api/resolve.js b/test/bdd/steps/api/resolve.js index 99b2a483d..2fd372bf9 100644 --- a/test/bdd/steps/api/resolve.js +++ b/test/bdd/steps/api/resolve.js @@ -1,38 +1,53 @@ -const { When, Then, Given } = require('@cucumber/cucumber'); +const { When, Given } = require('@cucumber/cucumber'); const { expect, assert } = require('chai'); -const sleep = require('sleep-async')().Promise; +const { setTimeout } = require('timers/promises'); const sortedStringify = require('json-stable-stringify'); -When(/^I call resolve on node (\d+) for last published assertion/, { timeout: 120000 }, async function (node) { - this.logger.log('I call resolve route successfully'); - expect(!!this.state.lastPublishData, 'Last publish data is undefined. Publish is not finalized.').to.be.equal(true); - const assertionIds = [this.state.lastPublishData.result.data.id]; - const result = await this.state.nodes[node - 1].client - .resolve(assertionIds).catch((error) => { - assert.fail(`Error while trying to resolve assertion. ${error}`); - }); - const handlerId = result.data.handler_id; +When( + /^I call resolve on node (\d+) for last published assertion/, + { timeout: 120000 }, + async function resolveCall (node) { + this.logger.log('I call resolve route successfully'); + expect( + !!this.state.lastPublishData, + 'Last publish data is undefined. Publish is not finalized.', + ).to.be.equal(true); + const assertionIds = [this.state.lastPublishData.result.data.id]; + const result = await this.state.nodes[node - 1].client + .resolve(assertionIds) + .catch((error) => { + assert.fail(`Error while trying to resolve assertion. ${error}`); + }); + const operationId = result.data.operation_id; - this.state.lastResolveData = { - nodeId: node - 1, - handlerId, - assertionIds, - }; -}); + this.state.lastResolveData = { + nodeId: node - 1, + operationId, + assertionIds, + }; + }, +); -Given('I wait for last resolve to finalize', { timeout: 120000 }, async function () { +Given('I wait for last resolve to finalize', { timeout: 120000 }, async function resolveFinalizeCall () { this.logger.log('I wait for last resolve to finalize'); - expect(!!this.state.lastResolveData, 'Last resolve data is undefined. Resolve is not started.').to.be.equal(true); + expect( + !!this.state.lastResolveData, + 'Last resolve data is undefined. Resolve is not started.', + ).to.be.equal(true); const resolveData = this.state.lastResolveData; let loopForResolveResult = true; let retryCount = 0; const maxRetryCount = 2; while (loopForResolveResult) { - this.logger.log(`Getting resolve result for handler id: ${resolveData.handlerId} on node: ${resolveData.nodeId}`); + this.logger.log( + `Getting resolve result for operation id: ${resolveData.operationId} on node: ${resolveData.nodeId}`, + ); // eslint-disable-next-line no-await-in-loop - const resolveResult = await this.state.nodes[resolveData.nodeId].client.getResult(resolveData.handlerId, 'resolve').catch((error) => { - assert.fail(`Error while trying to get resolve result assertion. ${error}`); - }); + const resolveResult = await this.state.nodes[resolveData.nodeId].client + .getResult(resolveData.operationId, 'resolve') + .catch((error) => { + assert.fail(`Error while trying to get resolve result assertion. ${error}`); + }); if (resolveResult) { this.state.lastResolveData.result = resolveResult; loopForResolveResult = false; @@ -43,28 +58,49 @@ Given('I wait for last resolve to finalize', { timeout: 120000 }, async function } else { retryCount += 1; // eslint-disable-next-line no-await-in-loop - await sleep.sleep(5000); + await setTimeout(5000); } } }); -Given(/Last resolve finished with status: ([COMPLETED|FAILED]+)$/, { timeout: 120000 }, async function (status) { - this.logger.log(`Last resolve finished with status: ${status}`); - expect(!!this.state.lastResolveData, 'Last resolve data is undefined. Resolve is not started.').to.be.equal(true); - expect(!!this.state.lastResolveData.result, 'Last resolve data result is undefined. Resolve is not finished.').to.be.equal(true); +Given( + /Last resolve finished with status: ([COMPLETED|FAILED]+)$/, + { timeout: 120000 }, + async function lastResolveFinishedCall (status) { + this.logger.log(`Last resolve finished with status: ${status}`); + expect( + !!this.state.lastResolveData, + 'Last resolve data is undefined. Resolve is not started.', + ).to.be.equal(true); + expect( + !!this.state.lastResolveData.result, + 'Last resolve data result is undefined. Resolve is not finished.', + ).to.be.equal(true); - const resolveData = this.state.lastResolveData; - expect(resolveData.result.status, 'Publish result status validation failed').to.be.equal(status); -}); + const resolveData = this.state.lastResolveData; + expect(resolveData.result.status, 'Publish result status validation failed').to.be.equal( + status, + ); + }, +); -Given(/Last resolve returned valid result$/, { timeout: 120000 }, async function () { +Given(/Last resolve returned valid result$/, { timeout: 120000 }, async function resolveCall () { this.logger.log('Last resolve returned valid result'); - expect(!!this.state.lastResolveData, 'Last resolve data is undefined. Resolve is not started.').to.be.equal(true); - expect(!!this.state.lastResolveData.result, 'Last publish data result is undefined. Publish is not finished.').to.be.equal(true); + expect( + !!this.state.lastResolveData, + 'Last resolve data is undefined. Resolve is not started.', + ).to.be.equal(true); + expect( + !!this.state.lastResolveData.result, + 'Last publish data result is undefined. Publish is not finished.', + ).to.be.equal(true); const resolveData = this.state.lastResolveData; - expect(Array.isArray(resolveData.result.data), 'Resolve result data expected to be array').to.be.equal(true); + expect( + Array.isArray(resolveData.result.data), + 'Resolve result data expected to be array', + ).to.be.equal(true); // todo only one element in array should be returned - //expect(resolveData.result.data.length, 'Returned data array length').to.be.equal(1); + // expect(resolveData.result.data.length, 'Returned data array length').to.be.equal(1); const resolvedAssertion = resolveData.result.data[0].assertion.data; const publishedAssertion = this.state.lastPublishData.assertion; diff --git a/test/bdd/steps/blockchain.js b/test/bdd/steps/blockchain.js index 32c7629ca..3a273e331 100644 --- a/test/bdd/steps/blockchain.js +++ b/test/bdd/steps/blockchain.js @@ -1,10 +1,10 @@ const { - And, But, Given, Then, When, + Given } = require('@cucumber/cucumber'); const { expect } = require('chai'); const LocalBlockchain = require('./lib/local-blockchain'); -Given(/^the blockchain is set up$/, { timeout: 60000 }, function (done) { +Given(/^the blockchain is set up$/, { timeout: 60000 }, function blockchinSetup (done) { expect(this.state.localBlockchain, 'localBlockchain shouldn\'t be defined').to.be.equal(null); this.state.localBlockchain = new LocalBlockchain({ logger: this.logger }); diff --git a/test/bdd/steps/common.js b/test/bdd/steps/common.js index 2a3c3135d..ca11f9a34 100644 --- a/test/bdd/steps/common.js +++ b/test/bdd/steps/common.js @@ -19,7 +19,7 @@ function getBlockchainConfiguration(localBlockchain, privateKey, publicKey) { ]; } -Given(/^I setup (\d+) node[s]*$/, { timeout: 120000 }, function (nodeCount, done) { +Given(/^I setup (\d+) node[s]*$/, { timeout: 120000 }, function nodeSetup (nodeCount, done) { this.logger.log(`I setup ${nodeCount} node${nodeCount !== 1 ? 's' : ''}`); const wallets = this.state.localBlockchain.getWallets(); let nodesStarted = 0; @@ -59,6 +59,7 @@ Given(/^I setup (\d+) node[s]*$/, { timeout: 120000 }, function (nodeCount, done }); forkedNode.send(JSON.stringify(nodeConfiguration)); + // eslint-disable-next-line no-loop-func forkedNode.on('message', (response) => { if (response.error) { // todo handle error @@ -84,10 +85,9 @@ Given(/^I setup (\d+) node[s]*$/, { timeout: 120000 }, function (nodeCount, done } }); -Given(/^(\d+) bootstrap is running$/, { timeout: 80000 }, function (nodeCount, done) { +Given(/^(\d+) bootstrap is running$/, { timeout: 80000 }, function bootstrapRunning (nodeCount, done) { expect(this.state.bootstraps).to.have.length(0); expect(nodeCount).to.be.equal(1); // Currently not supported more. - console.log('Initializing bootstrap node'); const wallets = this.state.localBlockchain.getWallets(); const nodeName = 'origintrail-test-bootstrap'; const bootstrapNodeConfiguration = { @@ -141,7 +141,7 @@ Given(/^(\d+) bootstrap is running$/, { timeout: 80000 }, function (nodeCount, d }); }); -Given(/^I setup (\d+) additional node[s]*$/, { timeout: 120000 }, function (nodeCount, done) { +Given(/^I setup (\d+) additional node[s]*$/, { timeout: 120000 }, function setupAdditionalNode (nodeCount, done) { this.logger.log(`I setup ${nodeCount} additional node${nodeCount !== 1 ? 's' : ''}`); const wallets = this.state.localBlockchain.getWallets(); const currentNumberOfNodes = Object.keys(this.state.nodes).length; @@ -183,6 +183,7 @@ Given(/^I setup (\d+) additional node[s]*$/, { timeout: 120000 }, function (node }); forkedNode.send(JSON.stringify(nodeConfiguration)); + // eslint-disable-next-line no-loop-func forkedNode.on('message', (response) => { if (response.error) { // todo handle error diff --git a/test/bdd/steps/hooks.js b/test/bdd/steps/hooks.js index 751204ceb..3174054ec 100644 --- a/test/bdd/steps/hooks.js +++ b/test/bdd/steps/hooks.js @@ -1,17 +1,14 @@ require('dotenv').config(); -const { - Before, BeforeAll, After, AfterAll, -} = require('@cucumber/cucumber'); +const { Before, BeforeAll, After, AfterAll } = require('@cucumber/cucumber'); const slugify = require('slugify'); const fs = require('fs'); const { ServerClientConfig, GraphDBServerClient } = require('graphdb').server; process.env.NODE_ENV = 'test'; -BeforeAll(() => { -}); +BeforeAll(() => {}); -Before(function (testCase, done) { +Before(function beforeMethod (testCase, done) { this.logger = console; this.logger.log('Starting scenario: ', testCase.pickle.name, `${testCase.pickle.uri}`); // Initialize variables @@ -27,9 +24,19 @@ Before(function (testCase, done) { done(); }); -After(function (testCase, done) { - this.logger.log('Completed scenario: ', testCase.pickle.name, `${testCase.gherkinDocument.uri}:${testCase.gherkinDocument.feature.location.line}`); - this.logger.log('with status: ', testCase.result.status, ' and duration: ', testCase.result.duration, ' miliseconds.'); +After(function afterMethod (testCase, done) { + this.logger.log( + 'Completed scenario: ', + testCase.pickle.name, + `${testCase.gherkinDocument.uri}:${testCase.gherkinDocument.feature.location.line}`, + ); + this.logger.log( + 'with status: ', + testCase.result.status, + ' and duration: ', + testCase.result.duration, + ' miliseconds.', + ); if (testCase.result.status === 'failed') { this.logger.log('Oops, exception occurred:'); @@ -56,7 +63,7 @@ After(function (testCase, done) { } } this.logger.log('After test hook, cleaning repositories'); - // delete graphdb repositories + // delete ot-graphdb repositories const serverConfig = new ServerClientConfig('http://localhost:7200') .setTimeout(40000) .setKeepAlive(true); @@ -72,10 +79,8 @@ After(function (testCase, done) { }); }); -AfterAll(async () => { -}); +AfterAll(async () => {}); -process.on('unhandledRejection', (reason, p) => { - console.log(`Unhandled Rejection:\n${reason.stack}`); +process.on('unhandledRejection', () => { process.abort(); }); diff --git a/test/bdd/steps/lib/local-blockchain.js b/test/bdd/steps/lib/local-blockchain.js index a68a3ef62..30480e3d1 100644 --- a/test/bdd/steps/lib/local-blockchain.js +++ b/test/bdd/steps/lib/local-blockchain.js @@ -95,7 +95,6 @@ const wallets = accountPrivateKeys.map((privateKey) => ({ */ class LocalBlockchain { constructor(options = {}) { - console.log('Initializing local bockchain'); this.logger = options.logger || console; this.port = options.port || 7545; this.name = options.name || 'ganache'; @@ -113,7 +112,7 @@ class LocalBlockchain { async initialize() { return new Promise((accept, reject) => { - this.server.listen(this.port, async (err, blockchain) => { + this.server.listen(this.port, async (err) => { if (err) { reject(err); return; diff --git a/test/bdd/steps/lib/ot-node-process.js b/test/bdd/steps/lib/ot-node-process.js index 9e231b52d..2bb9b324f 100644 --- a/test/bdd/steps/lib/ot-node-process.js +++ b/test/bdd/steps/lib/ot-node-process.js @@ -1,4 +1,4 @@ -const sleep = require('sleep-async')().Promise; +const {setTimeout} = require('timers/promises'); const OTNode = require('../../../../ot-node'); const HttpApiHelper = require('../../../utilities/http-api-helper'); @@ -19,7 +19,7 @@ process.on('message', async (data) => { started = true; } catch (error) { // eslint-disable-next-line no-await-in-loop - await sleep.sleep(1000); + await setTimeout(1000); } } diff --git a/test/bdd/steps/lib/state.js b/test/bdd/steps/lib/state.js index 8b1eb7b99..9adfd0199 100644 --- a/test/bdd/steps/lib/state.js +++ b/test/bdd/steps/lib/state.js @@ -3,6 +3,7 @@ * This object looks like this: */ +// eslint-disable-next-line no-unused-vars const state = { // this is local blockchain object look at test/bdd/steps/lib/local-blockchain.js localBlockchain: {}, @@ -20,14 +21,14 @@ const state = { bootstraps: [], lastPublishData: { nodeId: 1, - handlerId: '', + operationId: '', keywords: ['', ''], assertion: {}, result: {}, }, lastResolveData: { nodeId: 1, - handlerId: '', + operationId: '', assertionIds: ['', ''], result: {}, }, diff --git a/test/unit/calculateHash-test.js b/test/unit/calculateHash-test.js deleted file mode 100644 index 89f96cd5c..000000000 --- a/test/unit/calculateHash-test.js +++ /dev/null @@ -1,13 +0,0 @@ -const { describe, it } = require('mocha'); -const { assert } = require('chai'); -const calculate = require('../../modules/CalculateHash'); - -describe('Calculating data hash', () => { - it('Calculating data hash of dataset using sha3-256', async () => { - const value = 'v6-ot-node-test'; - const hashedValue = calculate.calculateDataHash(value); - - assert.isString(hashedValue); - assert.equal(hashedValue, '0x07e18a8d5069a82de35ecad01b65a19ae18d1910beca6fdc5ff3dc4ef349606f'); - }); -}); diff --git a/test/unit/middleware/authentication-middleware.test.js b/test/unit/middleware/authentication-middleware.test.js new file mode 100644 index 000000000..4f332a051 --- /dev/null +++ b/test/unit/middleware/authentication-middleware.test.js @@ -0,0 +1,85 @@ +const sinon = require('sinon'); +const { describe, it, afterEach } = require('mocha'); +const { expect } = require('chai'); + +const authenticationMiddleware = require('../../../src/modules/http-client/implementation/middleware/authentication-middleware'); +const AuthService = require('../../../src/service/auth-service'); + +describe('authentication middleware test', async () => { + const sandbox = sinon.createSandbox(); + + const getAuthService = (options) => + sandbox.createStubInstance(AuthService, { + authenticate: options.isAuthenticated, + isPublicOperation: options.isPublicOperation, + }); + + afterEach(() => { + sandbox.restore(); + }); + + it('calls next if isPublic evaluated to true', async () => { + const middleware = authenticationMiddleware( + getAuthService({ + isPublicOperation: true, + }), + ); + + const req = { headers: { authorization: 'Bearer token' }, url: '/publish' }; + + const spySend = sandbox.spy(); + const spyStatus = sandbox.spy(() => ({ send: spySend })); + + const nextSpy = sandbox.spy(); + await middleware(req, { status: spyStatus }, nextSpy); + + expect(nextSpy.calledOnce).to.be.true; + expect(spyStatus.notCalled).to.be.true; + expect(spySend.notCalled).to.be.true; + }); + + it('calls next if isAuthenticated is evaluated as true', async () => { + const middleware = authenticationMiddleware( + getAuthService({ + isPublicOperation: false, + isAuthenticated: true, + }), + ); + + const req = { headers: { authorization: 'Bearer token' }, url: '/publish' }; + + const spySend = sandbox.spy(); + const spyStatus = sandbox.spy(() => ({ send: spySend })); + + const nextSpy = sandbox.spy(); + await middleware(req, { status: spyStatus }, nextSpy); + + expect(nextSpy.calledOnce).to.be.true; + expect(spyStatus.notCalled).to.be.true; + expect(spySend.notCalled).to.be.true; + }); + + it('returns 401 if isAuthenticated is evaluated as false', async () => { + const middleware = authenticationMiddleware( + getAuthService({ + isPublicOperation: false, + isAuthenticated: false, + }), + ); + + const req = { headers: { authorization: 'Bearer token' }, url: '/publish' }; + + const spySend = sandbox.spy(); + const spyStatus = sandbox.spy(() => ({ send: spySend })); + const spyNext = sandbox.spy(); + + await middleware(req, { status: spyStatus }, spyNext); + + const [statusCode] = spyStatus.args[0]; + + expect(statusCode).to.be.eq(401); + expect(spyStatus.calledOnce).to.be.true; + expect(spySend.calledOnce).to.be.true; + expect(spyNext.notCalled).to.be.true; + }); +}); diff --git a/test/unit/middleware/authorization-middleware.test.js b/test/unit/middleware/authorization-middleware.test.js new file mode 100644 index 000000000..c805d9e5a --- /dev/null +++ b/test/unit/middleware/authorization-middleware.test.js @@ -0,0 +1,85 @@ +const sinon = require('sinon'); +const { describe, it, afterEach } = require('mocha'); +const { expect } = require('chai'); + +const authorizationMiddleware = require('../../../src/modules/http-client/implementation/middleware/authorization-middleware'); +const AuthService = require('../../../src/service/auth-service'); + +describe('authentication middleware test', async () => { + const sandbox = sinon.createSandbox(); + + const getAuthService = (options) => + sandbox.createStubInstance(AuthService, { + authenticate: options.isAuthenticated, + isAuthorized: options.isAuthorized, + isPublicOperation: options.isPublicOperation, + }); + + afterEach(() => { + sandbox.restore(); + }); + + it('calls next if isPublicOperation is resolved to true', async () => { + const middleware = authorizationMiddleware( + getAuthService({ + isPublicOperation: true, + }), + ); + + const req = { headers: { authorization: 'Bearer token' }, url: '/publish' }; + + const spySend = sandbox.spy(); + const spyStatus = sandbox.spy(() => ({ send: spySend })); + + const nextSpy = sandbox.spy(); + await middleware(req, { status: spyStatus }, nextSpy); + + expect(nextSpy.calledOnce).to.be.true; + expect(spyStatus.notCalled).to.be.true; + expect(spySend.notCalled).to.be.true; + }); + + it('calls next if isAuthenticated is evaluated as true', async () => { + const middleware = authorizationMiddleware( + getAuthService({ + isPublicOperation: true, + }), + ); + + const req = { headers: { authorization: 'Bearer token' }, url: '/publish' }; + + const spySend = sandbox.spy(); + const spyStatus = sandbox.spy(() => ({ send: spySend })); + + const nextSpy = sandbox.spy(); + await middleware(req, { status: spyStatus }, nextSpy); + + expect(nextSpy.calledOnce).to.be.true; + expect(spyStatus.notCalled).to.be.true; + expect(spySend.notCalled).to.be.true; + }); + + it('returns 403 if isAuthenticated is evaluated as false', async () => { + const middleware = authorizationMiddleware( + getAuthService({ + isPublicOperation: false, + isAuthenticated: false, + }), + ); + + const req = { headers: { authorization: 'Bearer token' }, url: '/publish' }; + + const spySend = sandbox.spy(); + const spyStatus = sandbox.spy(() => ({ send: spySend })); + const spyNext = sandbox.spy(); + + await middleware(req, { status: spyStatus }, spyNext); + + const [statusCode] = spyStatus.args[0]; + + expect(statusCode).to.be.eq(403); + expect(spyStatus.calledOnce).to.be.true; + expect(spySend.calledOnce).to.be.true; + expect(spyNext.notCalled).to.be.true; + }); +}); diff --git a/test/unit/service/auth-service.test.js b/test/unit/service/auth-service.test.js new file mode 100644 index 000000000..a18b6b74d --- /dev/null +++ b/test/unit/service/auth-service.test.js @@ -0,0 +1,321 @@ +require('dotenv').config(); +const { expect } = require('chai'); +const { describe, it, afterEach } = require('mocha'); +const uuid = require('uuid').v4; +const sinon = require('sinon'); + +const AuthService = require('../../../src/service/auth-service'); +const jwtUtil = require('../../../src/service/util/jwt-util'); +const RepositoryModuleManager = require('../../../src/modules/repository/repository-module-manager'); + +const whitelistedIps = [ + '::1', + '127.0.0.1', + '54.31.28.8', + 'a3c6:3c39:492c:831b:d1a1:7944:b984:f32a', +]; +const invalidIps = ['247.8.32.50', null, undefined, {}, [], true, false, 123, '123...', NaN]; +const invalidTokens = ['token', 12345, {}, [], undefined, null, true, false, '123.321.32', NaN]; + +const tests = [ + { + ipAuthEnabled: false, + tokenAuthEnabled: false, + ipValid: false, + tokenValid: false, + tokenRevoked: false, + tokenExpired: false, + expected: true, + }, + { + ipAuthEnabled: true, + tokenAuthEnabled: false, + ipValid: false, + tokenValid: false, + tokenRevoked: false, + tokenExpired: false, + expected: false, + }, + { + ipAuthEnabled: true, + tokenAuthEnabled: false, + ipValid: true, + tokenValid: false, + tokenRevoked: false, + tokenExpired: false, + expected: true, + }, + { + ipAuthEnabled: false, + tokenAuthEnabled: true, + ipValid: false, + tokenValid: false, + tokenRevoked: false, + tokenExpired: false, + expected: false, + }, + { + ipAuthEnabled: false, + tokenAuthEnabled: true, + ipValid: true, + tokenValid: false, + tokenRevoked: false, + tokenExpired: false, + expected: false, + }, + { + ipAuthEnabled: false, + tokenAuthEnabled: true, + ipValid: false, + tokenValid: true, + tokenRevoked: false, + tokenExpired: false, + expected: true, + }, + { + ipAuthEnabled: false, + tokenAuthEnabled: true, + ipValid: false, + tokenValid: true, + tokenRevoked: true, + tokenExpired: false, + expected: false, + }, + { + ipAuthEnabled: false, + tokenAuthEnabled: true, + ipValid: false, + tokenValid: true, + tokenRevoked: false, + tokenExpired: true, + expected: false, + }, + { + ipAuthEnabled: false, + tokenAuthEnabled: true, + ipValid: false, + tokenValid: true, + tokenRevoked: true, + tokenExpired: true, + expected: false, + }, + { + ipAuthEnabled: true, + tokenAuthEnabled: true, + ipValid: false, + tokenValid: false, + tokenRevoked: false, + tokenExpired: false, + expected: false, + }, + { + ipAuthEnabled: true, + tokenAuthEnabled: true, + ipValid: true, + tokenValid: false, + tokenRevoked: false, + tokenExpired: false, + expected: false, + }, + { + ipAuthEnabled: true, + tokenAuthEnabled: true, + ipValid: true, + tokenValid: true, + tokenRevoked: false, + tokenExpired: false, + expected: true, + }, + { + ipAuthEnabled: true, + tokenAuthEnabled: true, + ipValid: true, + tokenValid: true, + tokenRevoked: true, + tokenExpired: false, + expected: false, + }, + { + ipAuthEnabled: true, + tokenAuthEnabled: true, + ipValid: true, + tokenValid: true, + tokenRevoked: false, + tokenExpired: true, + expected: false, + }, + { + ipAuthEnabled: true, + tokenAuthEnabled: true, + ipValid: true, + tokenValid: true, + tokenRevoked: true, + tokenExpired: true, + expected: false, + }, +]; + +const configObj = { + auth: { + ipWhitelist: whitelistedIps, + publicOperations: ['QUERY'], + }, +}; + +const getConfig = (ipAuthEnabled, tokenAuthEnabled) => { + const configClone = JSON.parse(JSON.stringify(configObj)); + + configClone.auth.ipBasedAuthEnabled = ipAuthEnabled; + configClone.auth.tokenBasedAuthEnabled = tokenAuthEnabled; + + return configClone; +}; + +const getRepository = (isTokenRevoked, tokenAbilitiesValid) => + sinon.createStubInstance(RepositoryModuleManager, { + isTokenRevoked, + getTokenAbilities: tokenAbilitiesValid ? ['QUERY', 'PUBLISH', 'SEARCH'] : [], + }); + +const getIps = (isValid) => { + if (isValid) { + return whitelistedIps; + } + + return invalidIps; +}; + +const getTokens = (isValid, isExpired) => { + if (isValid) { + if (isExpired) { + return [jwtUtil.generateJWT(uuid(), '-2d')]; + } + return [jwtUtil.generateJWT(uuid())]; + } + + return invalidTokens; +}; + +describe('authenticate()', async () => { + afterEach(() => { + sinon.restore(); + }); + + for (const t of tests) { + let testText = ''; + + for (const field in t) { + if (field === 'expected') { + testText += `${field.toUpperCase()}: ${t[field]}`; + } else { + testText += `${field}: ${t[field]} | `; + } + } + + it(testText, async () => { + const config = getConfig(t.ipAuthEnabled, t.tokenAuthEnabled); + const repositoryModuleManager = getRepository(t.tokenRevoked); + const ips = getIps(t.ipValid); + const tokens = getTokens(t.tokenValid, t.tokenExpired); + const authService = new AuthService({ config, repositoryModuleManager }); + + for (const ip of ips) { + for (const token of tokens) { + // eslint-disable-next-line no-await-in-loop + const isAuthenticated = await authService.authenticate(ip, token); + expect(isAuthenticated).to.be.equal(t.expected); + } + } + }); + } + + it('returns false if token is valid but is not found in the database', async () => { + const config = getConfig(false, true); + const repositoryModuleManager = getRepository(null, true); + const [token] = getTokens(true); + const authService = new AuthService({ config, repositoryModuleManager }); + + const isAuthenticated = await authService.authenticate('', token); + expect(isAuthenticated).to.be.false; + }); +}); + +describe('isAuthorized()', async () => { + afterEach(() => { + sinon.restore(); + }); + + it('returns true if tokenBasedAuthentication is disabled', async () => { + const config = getConfig(false, false); + const authService = new AuthService({ config }); + + const isAuthorized = await authService.isAuthorized(null, null); + expect(isAuthorized).to.be.equal(true); + }); + + it('returns true if user has ability to perform an action', async () => { + const config = getConfig(false, true); + const repositoryModuleManager = getRepository(false, true); + const jwt = jwtUtil.generateJWT(uuid()); + const authService = new AuthService({ config, repositoryModuleManager }); + + const isAuthorized = await authService.isAuthorized(jwt, 'QUERY'); + expect(isAuthorized).to.be.equal(true); + }); + + it("returns false if user doesn't have ability to perform an action", async () => { + const config = getConfig(false, true); + const jwt = jwtUtil.generateJWT(uuid()); + + const authService = new AuthService({ + config, + repositoryModuleManager: getRepository(false, true), + }); + const isAuthorized = await authService.isAuthorized(jwt, 'OPERATION'); + expect(isAuthorized).to.be.equal(false); + }); + + it('returns false if user roles are not found', async () => { + const config = getConfig(false, true); + const jwt = jwtUtil.generateJWT(uuid()); + + const authService = new AuthService({ + config, + repositoryModuleManager: getRepository(false, false), + }); + + const isAuthorized = await authService.isAuthorized(jwt, 'PUBLISH'); + expect(isAuthorized).to.be.equal(false); + }); +}); + +describe('isPublicOperation()', async () => { + afterEach(() => { + sinon.restore(); + }); + + it('returns true if route is public', async () => { + const config = getConfig(false, false); + const authService = new AuthService({ config }); + + const isPublic = authService.isPublicOperation('QUERY'); + expect(isPublic).to.be.equal(true); + }); + + it('returns false if route is not public', async () => { + const config = getConfig(false, false, true); + const authService = new AuthService({ config }); + + const isPublic = authService.isPublicOperation('PUBLISH'); + expect(isPublic).to.be.equal(false); + }); + + it('returns false if public routes are not defined', async () => { + const config = getConfig(false, false, true); + config.auth.publicOperations = undefined; + const authService = new AuthService({ config }); + + const isPublic = authService.isPublicOperation('PUBLISH'); + expect(isPublic).to.be.equal(false); + }); +}); diff --git a/test/unit/service/util/jwt-util.test.js b/test/unit/service/util/jwt-util.test.js new file mode 100644 index 000000000..eb4577403 --- /dev/null +++ b/test/unit/service/util/jwt-util.test.js @@ -0,0 +1,108 @@ +require('dotenv').config(); +const uuid = require('uuid').v4; +const { expect } = require('chai'); + +const { describe, it } = require('mocha'); + +const getPayload = (token) => { + const b64Payload = token.split('.')[1]; + + return JSON.parse(Buffer.from(b64Payload, 'base64').toString()); +}; + +const jwtUtil = require('../../../../src/service/util/jwt-util'); + +const nonJwts = [ + '123', + 214214124124, + 'header.payload.signature', + null, + undefined, + true, + false, + {}, + [], +]; + +describe('Auth JWT generation', async () => { + it('generates JWT token with tokenId payload', () => { + const tokenId = uuid(); + const token = jwtUtil.generateJWT(tokenId); + + expect(token).not.be.null; + expect(getPayload(token).jti).to.be.equal(tokenId); + }); + + it('generates null if invalid tokenId is provided', () => { + const nonUuids = [true, false, undefined, null, {}, [], 'string', 123]; + + for (const val of nonUuids) { + const token = jwtUtil.generateJWT(val); + expect(token).to.be.null; + } + }); + + it('generates payload without expiration date if expiresIn argument is not provided', () => { + const token = jwtUtil.generateJWT(uuid()); + expect(getPayload(token).exp).to.be.undefined; + }); + + it('generates payload with expiration date if expiresIn argument is provided', () => { + const token = jwtUtil.generateJWT(uuid(), '2d'); + expect(getPayload(token).exp).to.be.ok; + }); +}); + +describe('JWT token validation', async () => { + it('returns true if JWT is valid', async () => { + const token = jwtUtil.generateJWT(uuid()); + expect(jwtUtil.validateJWT(token)).to.be.true; + }); + + it('returns true if JWT is expired', async () => { + const token = jwtUtil.generateJWT(uuid(), '-2d'); + expect(jwtUtil.validateJWT(token)).to.be.false; + }); + + it('returns false if JWT is not valid', async () => { + const token = + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'; + expect(jwtUtil.validateJWT(token)).to.be.false; + }); + + it('returns false if non JWT value is passed', async () => { + for (const val of nonJwts) { + expect(jwtUtil.validateJWT(val)).to.be.false; + } + }); +}); + +describe('JWT payload extracting', async () => { + it('returns JWT payload if valid token is provided', async () => { + const token = jwtUtil.generateJWT(uuid()); + + expect(jwtUtil.getPayload(token)).to.be.ok; + }); + + it('returns null if invalid token is provided', async () => { + for (const val of nonJwts) { + expect(jwtUtil.getPayload(val)).to.be.null; + } + }); +}); + +describe('JWT decoding', async () => { + it('returns decoded JWT (header, payload, signature) if valid token is provided', async () => { + const token = jwtUtil.generateJWT(uuid()); + + expect(jwtUtil.decode(token).header).to.be.ok; + expect(jwtUtil.decode(token).payload).to.be.ok; + expect(jwtUtil.decode(token).signature).to.be.ok; + }); + + it('returns null if invalid token is provided', async () => { + for (const val of nonJwts) { + expect(jwtUtil.decode(val)).to.be.null; + } + }); +}); diff --git a/test/unit/sparlql-query-service.test.js b/test/unit/sparlql-query-service.test.js index 007236f7f..7ec1616b8 100644 --- a/test/unit/sparlql-query-service.test.js +++ b/test/unit/sparlql-query-service.test.js @@ -1,3 +1,4 @@ +/* eslint-disable */ const Blazegraph = require('../../external/blazegraph-service') const GraphDB = require('../../external/graphdb-service'); const Fuseki = require('../../external/fuseki-service'); diff --git a/test/utilities/dkg-client-helper.js b/test/utilities/dkg-client-helper.js index 3bb7d1afa..1e2805e02 100644 --- a/test/utilities/dkg-client-helper.js +++ b/test/utilities/dkg-client-helper.js @@ -37,8 +37,8 @@ class DkgClientHelper { }); } - async resolve(ids) { - return this.client._resolveRequest({ + async get(ids) { + return this.client._getRequest({ ids, }); } @@ -56,14 +56,13 @@ class DkgClientHelper { }); } - async getResult(handler_id, operation) { + async getResult(operation_id, operation) { return this.client ._getResult({ - handler_id, + operation_id, operation, }) - .catch((error) => { - console.log(`Error getting result. ${error}`); + .catch(() => { }); } } diff --git a/tools/local-network-setup/.bootstrap_origintrail_noderc b/tools/local-network-setup/.bootstrap_origintrail_noderc index a24fefe18..788c888c1 100644 --- a/tools/local-network-setup/.bootstrap_origintrail_noderc +++ b/tools/local-network-setup/.bootstrap_origintrail_noderc @@ -1,29 +1,83 @@ { - "blockchain": [ - { - "blockchainTitle": "Polygon", - "networkId": "polygon::testnet", - "rpcEndpoints": [ - "https://rpc-mumbai.maticvigil.com/", - "https://matic-mumbai.chainstacklabs.com", - "https://matic-testnet-archive-rpc.bwarelabs.com" - ], - "publicKey": "", - "privateKey": "" - } - ], - "graphDatabase": { - "username": "admin", - "password": "" - }, "logLevel": "trace", - "rpcPort": 8900, - "network": { - "port": 9000, - "privateKey": "CAAS4QQwggJdAgEAAoGBALOYSCZsmINMpFdH8ydA9CL46fB08F3ELfb9qiIq+z4RhsFwi7lByysRnYT/NLm8jZ4RvlsSqOn2ZORJwBywYD5MCvU1TbEWGKxl5LriW85ZGepUwiTZJgZdDmoLIawkpSdmUOc1Fbnflhmj/XzAxlnl30yaa/YvKgnWtZI1/IwfAgMBAAECgYEAiZq2PWqbeI6ypIVmUr87z8f0Rt7yhIWZylMVllRkaGw5WeGHzQwSRQ+cJ5j6pw1HXMOvnEwxzAGT0C6J2fFx60C6R90TPos9W0zSU+XXLHA7AtazjlSnp6vHD+RxcoUhm1RUPeKU6OuUNcQVJu1ZOx6cAcP/I8cqL38JUOOS7XECQQDex9WUKtDnpHEHU/fl7SvCt0y2FbGgGdhq6k8nrWtBladP5SoRUFuQhCY8a20fszyiAIfxQrtpQw1iFPBpzoq1AkEAzl/s3XPGi5vFSNGLsLqbVKbvoW9RUaGN8o4rU9oZmPFL31Jo9FLA744YRer6dYE7jJMel7h9VVWsqa9oLGS8AwJALYwfv45Nbb6yGTRyr4Cg/MtrFKM00K3YEGvdSRhsoFkPfwc0ZZvPTKmoA5xXEC8eC2UeZhYlqOy7lL0BNjCzLQJBAMpvcgtwa8u6SvU5B0ueYIvTDLBQX3YxgOny5zFjeUR7PS+cyPMQ0cyql8jNzEzDLcSg85tkDx1L4wi31Pnm/j0CQFH/6MYn3r9benPm2bYSe9aoJp7y6ht2DmXmoveNbjlEbb8f7jAvYoTklJxmJCcrdbNx/iCj2BuAinPPgEmUzfQ=" + "modules": { + "repository": { + "enabled": true, + "implementation": { + "sequelize-repository": { + "package": "./repository/implementation/sequelize/sequelize-repository", + "config": {} + } + } + }, + "tripleStore": { + "enabled": true, + "defaultImplementation": "ot-graphdb", + "implementation": { + "ot-graphdb": { + "package": "./triple-store/implementation/ot-graphdb/ot-graphdb", + "config": {} + } + } + }, + "network": { + "enabled": true, + "implementation": { + "libp2p-service": { + "package": "./network/implementation/libp2p-service", + "config": { + "port": 9000, + "privateKey": "CAAS4QQwggJdAgEAAoGBALOYSCZsmINMpFdH8ydA9CL46fB08F3ELfb9qiIq+z4RhsFwi7lByysRnYT/NLm8jZ4RvlsSqOn2ZORJwBywYD5MCvU1TbEWGKxl5LriW85ZGepUwiTZJgZdDmoLIawkpSdmUOc1Fbnflhmj/XzAxlnl30yaa/YvKgnWtZI1/IwfAgMBAAECgYEAiZq2PWqbeI6ypIVmUr87z8f0Rt7yhIWZylMVllRkaGw5WeGHzQwSRQ+cJ5j6pw1HXMOvnEwxzAGT0C6J2fFx60C6R90TPos9W0zSU+XXLHA7AtazjlSnp6vHD+RxcoUhm1RUPeKU6OuUNcQVJu1ZOx6cAcP/I8cqL38JUOOS7XECQQDex9WUKtDnpHEHU/fl7SvCt0y2FbGgGdhq6k8nrWtBladP5SoRUFuQhCY8a20fszyiAIfxQrtpQw1iFPBpzoq1AkEAzl/s3XPGi5vFSNGLsLqbVKbvoW9RUaGN8o4rU9oZmPFL31Jo9FLA744YRer6dYE7jJMel7h9VVWsqa9oLGS8AwJALYwfv45Nbb6yGTRyr4Cg/MtrFKM00K3YEGvdSRhsoFkPfwc0ZZvPTKmoA5xXEC8eC2UeZhYlqOy7lL0BNjCzLQJBAMpvcgtwa8u6SvU5B0ueYIvTDLBQX3YxgOny5zFjeUR7PS+cyPMQ0cyql8jNzEzDLcSg85tkDx1L4wi31Pnm/j0CQFH/6MYn3r9benPm2bYSe9aoJp7y6ht2DmXmoveNbjlEbb8f7jAvYoTklJxmJCcrdbNx/iCj2BuAinPPgEmUzfQ=" + } + } + } + }, + "blockchain": { + "defaultImplementation": "ganache", + "implementation": { + "ganache": { + "config": { + "blockchainTitle": "ganache", + "networkId": "ganache::testnet", + "hubContractAddress": "0xF21dD87cFC5cF5D073398833AFe5EFC543b78a00", + "rpcEndpoints": [ + "http://localhost:7545" + ], + "evmOperationalWalletPublicKey": "0xd6879C0A03aDD8cFc43825A42a3F3CF44DB7D2b9", + "evmOperationalWalletPrivateKey": "0x02b39cac1532bef9dba3e36ec32d3de1e9a88f1dda597d3ac6e2130aed9adc4e", + "evmManagementWalletPublicKey": "0x1B420da5f7Be66567526E32bc68ab29F1A63765A" + } + }, + "otp": { + "config": { + "rpcEndpoints": [ + "wss://parachain-tempnet-01.origin-trail.network" + ], + "evmOperationalWalletPublicKey": "0xd6879C0A03aDD8cFc43825A42a3F3CF44DB7D2b9", + "evmOperationalWalletPrivateKey": "0x02b39cac1532bef9dba3e36ec32d3de1e9a88f1dda597d3ac6e2130aed9adc4e", + "evmManagementWalletPublicKey": "0x1B420da5f7Be66567526E32bc68ab29F1A63765A" + } + }, + "polygon": { + "config": { + "rpcEndpoints": [ + "wss://polygon-mumbai.g.alchemy.com/v2/bkYqCNrIC0TX3nZHuwo_cx7xqP4pYQ9s", + "https://matic-mumbai.chainstacklabs.com", + "https://rpc-mumbai.matic.today", + "https://matic-testnet-archive-rpc.bwarelabs.com" + ], + "evmOperationalWalletPublicKey": "0xd6879C0A03aDD8cFc43825A42a3F3CF44DB7D2b9", + "evmOperationalWalletPrivateKey": "0x02b39cac1532bef9dba3e36ec32d3de1e9a88f1dda597d3ac6e2130aed9adc4e", + "evmManagementWalletPublicKey": "0x1B420da5f7Be66567526E32bc68ab29F1A63765A" + } + } + } + } }, - "ipWhitelist": [ - "::1", - "127.0.0.1" - ] + "auth": { + "ipWhitelist": [ + "::1", + "127.0.0.1" + ] + } } diff --git a/tools/local-network-setup/.dh_origintrail_noderc b/tools/local-network-setup/.dh_origintrail_noderc index 4e20d1cd9..5c0f7e265 100644 --- a/tools/local-network-setup/.dh_origintrail_noderc +++ b/tools/local-network-setup/.dh_origintrail_noderc @@ -1,32 +1,78 @@ { - "blockchain": [ - { - "blockchainTitle": "Polygon", - "networkId": "polygon::testnet", - "rpcEndpoints": [ - "https://rpc-mumbai.maticvigil.com/", - "https://matic-mumbai.chainstacklabs.com", - "https://rpc-mumbai.matic.today", - "https://matic-testnet-archive-rpc.bwarelabs.com" - ], - "publicKey": "...", - "privateKey": "..." + "logLevel": "trace", + "modules": { + "httpClient": { + "enabled": true, + "implementation": { + "express-http-client": { + "package": "./http-client/implementation/express-http-client", + "config": {} + } + } + }, + "repository": { + "enabled": true, + "implementation": { + "sequelize-repository": { + "package": "./repository/implementation/sequelize/sequelize-repository", + "config": {} + } + } + }, + "tripleStore": { + "enabled": true, + "defaultImplementation": "ot-graphdb", + "implementation": { + "ot-graphdb": { + "package": "./triple-store/implementation/ot-graphdb/ot-graphdb", + "config": {} + } + } + }, + "network": { + "enabled": true, + "implementation": { + "libp2p-service": { + "package": "./network/implementation/libp2p-service", + "config": { + "port": 9001, + "bootstrap": [ + "/ip4/0.0.0.0/tcp/9000/p2p/QmWyf3dtqJnhuCpzEDTNmNFYc5tjxTrXhGcUUmGHdg2gtj" + ] + } + } + } + }, + "blockchain": { + "defaultImplementation": "ganache", + "implementation": { + "ganache": { + "package": "./blockchain/implementation/ganache/ganache-service", + "config": { + "evmOperationalWalletPublicKey": "0xd6879C0A03aDD8cFc43825A42a3F3CF44DB7D2b9", + "evmOperationalWalletPrivateKey": "0x02b39cac1532bef9dba3e36ec32d3de1e9a88f1dda597d3ac6e2130aed9adc4e" + } + }, + "otp": { + "config": { + "rpcEndpoints": [ + "wss://parachain-tempnet-01.origin-trail.network" + ], + "evmOperationalWalletPublicKey": "...", + "evmOperationalWalletPrivateKey": "...", + "evmManagementWalletPublicKey": "..." + } + }, + "polygon": { + "config": {} + } + } } - ], - "graphDatabase": { - "username": "admin", - "password": "" }, - "logLevel": "trace", - "rpcPort": 8901, - "network": { - "port": 9001, - "bootstrap": [ - "/ip4/0.0.0.0/tcp/9000/p2p/QmWyf3dtqJnhuCpzEDTNmNFYc5tjxTrXhGcUUmGHdg2gtj" + "auth": { + "ipWhitelist": [ + "::1", + "127.0.0.1" ] - }, - "ipWhitelist": [ - "::1", - "127.0.0.1" - ] + } } diff --git a/tools/local-network-setup/README.md b/tools/local-network-setup/README.md index ae50493a4..6fb9b8cb3 100644 --- a/tools/local-network-setup/README.md +++ b/tools/local-network-setup/README.md @@ -1,68 +1,97 @@ -Local Network Setup Tool +DKG local network setup tool ======================== -#### Run a single command to create an entire testing environment for ot-node development. +This tool will help you set up a local DKG v6 network running with the Ganache blockchain. It is useful for development and testing purposes and is used internally by the OriginTrail core developers. +
-The Local Network Setup tool will set up the configuration files for the nodes and start the nodes in separate windows. -From there you're ready to send API calls to your local nodes and test new features on the ot-node. **Note: This tool is an internal tool used by the OriginTrail team and thus is developed for our workflow, meaning that it currently only supports MacOS**, but we encourage you to adapt it for your workflow as well. -Quick Start -=========== - -## Prerequisites - - -* An installed and running GraphDB - * In order to download GraphDB, please visit their official website and fill out a form. Installation files will be provided to you via email. -* An installed and running MySQL - * You need to create empty table named operationaldb inside MySQL -* You should have installed npm and Node.js (v14) or higher -* You should have ot-node dependencies installed with the `npm install` command -* You should have run db migrations: - * `npx sequelize --config=./config/sequelizeConfig.js db:migrate` -* generate a .env file in the ot-node root folder and add public, private keys for polygon blockchain and operational database password for root user (optional, default password is empty string): -```dotenv -NODE_ENV=development -PUBLIC_KEY= -PRIVATE_KEY= -OPERATIONAL_DB_PASSWORD= + +Prerequisites +============= + +* An installed and running triplestore (graph database) + * We recommend testing with GraphDB. In order to download GraphDB, please visit their official [website](https://graphdb.ontotext.com/). Alternatively other triple stores can be used (Blazegraph, Apache Jena and other RDF native graph databases) +* An installed and running MySQL server +* You should have installed npm and Node.js (v16) or higher + + +# Setup instructions + +In order to run the local network you fist need to clone the "ot-node" and "dkg-evm-module" repositories. +
+ +## 1. CLONE OT-NODE REPOSITORY & INSTALL DEPENDENCIES +After cloning the **ot-node** repository, please checkout to "v6/refactor/develop" branch and install dependencies by running: +```bash +git clone https://github.com/OriginTrail/ot-node.git && cd ot-node/ && git checkout v6/refactor/develop && npm install && cd .. ``` +
+## 2. CLONE DKG REPOSITORIES & INSTALL DKG SMART CONTRACT DEPENDENCIES +**Note:** DO NOT clone **dkg-evm-module** repository inside of the **ot-node** directory. +Clone the **dkg-evm-module** repository: +```bash +git clone https://github.com/OriginTrail/dkg-evm-module.git +``` -## How to start +then install dependencies with: +```bash +cd dkg-evm-module && npm install +``` -From the ot-node directory, run the below command +and run a local Ganache blockchain instance by executing: +```bash +npm run ganache +``` +
+ +### 2.2 Create the .env file inside the "dkg-evm-module" directory and deploy DKG smart contract: +```bash +nano .env +``` +and paste the following content inside (save and close): ```bash -bash setup-macos-environment.sh +ACCESS_KEY = http://localhost:7545 +PRIVATE_KEY = 02b39cac1532bef9dba3e36ec32d3de1e9a88f1dda597d3ac6e2130aed9adc4e ``` +**Note:** The private key above is used ONLY for convenience and SHOULD be changed to a secure key when used in production. -Usage -===== +After preparing the .env file, deploy DKG smart contracts by executing the following command (while Ganache is running): +```bash +npm run deploy +``` +
-## Specifying the number of nodes +## 3. START THE LOCAL NETWORK -The LNS tool deploys 4 nodes, each connected to Polygon Mumbai testnet. +## Specifying the number of nodes You can specify to run anywhere between one and ten nodes with the `--nodes` parameter. +**Note:** All nodes assume MySQL username root and no password. To change the MySQL login information update the .dh_origintrail_noderc template file sequelize-repository config object with your username and password
+ +The first node will be named `bootstrap`, while subsequent nodes will be named `dh1, dh2, ...`.
+ ```bash -bash setup-macos-environment.sh --nodes=10 +bash ./tools/local-network-setup/setup-macos-environment.sh --nodes=6 ``` +**Note:** With the above command, we will deploy a 6 nodes network (1 bootstrap and 5 subsequent nodes)
-The first node will be named `bootstrap`, while subsequent nodes will be named `dh1, dh2, ...`. + + +
Contribution ============ -OriginTrail is an open source project. We happily invite you to join us in our mission of building decentralized knowledge graph. If you would like to contribute, you are more than welcome. +OriginTrail is an open source project. We happily invite you to join us in our mission of building decentralized knowledge graph - we're excited for your contributions! Join us in discord to meet the dev community ### Useful links - [OriginTrail website](https://origintrail.io) [OriginTrail documentation page](http://docs.origintrail.io) diff --git a/tools/local-network-setup/generate-config-files.js b/tools/local-network-setup/generate-config-files.js index 3e4975f8a..b96c0471f 100644 --- a/tools/local-network-setup/generate-config-files.js +++ b/tools/local-network-setup/generate-config-files.js @@ -1,7 +1,8 @@ +/* eslint-disable */ const path = require('path'); const fs = require('fs'); const { execSync } = require('child_process'); -require('dotenv').config('.env'); +const keys = require('./keys.json'); const numberOfNodes = process.argv.length === 3 ? parseInt(process.argv[2], 10) : 4; @@ -13,15 +14,22 @@ const bootstrapTemplate = JSON.parse(fs.readFileSync(bootstrapTemplatePath)); console.log('Preparing keys for blockchain'); -if (!process.env.PRIVATE_KEY || !process.env.PUBLIC_KEY) { - console.log('Missing blockchain keys in .env file'); +if (!keys) { + console.log('Missing blockchain keys'); process.exit(1); } -template.blockchain[0].publicKey = process.env.PUBLIC_KEY; -template.blockchain[0].privateKey = process.env.PRIVATE_KEY; -bootstrapTemplate.blockchain[0].publicKey = process.env.PUBLIC_KEY; -bootstrapTemplate.blockchain[0].privateKey = process.env.PRIVATE_KEY; +for (const implementation in bootstrapTemplate.modules.blockchain.implementation) { + bootstrapTemplate.modules.blockchain.implementation[ + implementation + ].config.evmOperationalWalletPublicKey = keys.publicKey[0]; + bootstrapTemplate.modules.blockchain.implementation[ + implementation + ].config.evmOperationalWalletPrivateKey = keys.privateKey[0]; + bootstrapTemplate.modules.blockchain.implementation[ + implementation + ].config.evmManagementWalletPublicKey = keys.managementKey; +} fs.writeFileSync(bootstrapTemplatePath, JSON.stringify(bootstrapTemplate, null, 2)); @@ -43,9 +51,47 @@ for (let i = 0; i < numberOfNodes; i += 1) { const parsedTemplate = JSON.parse(JSON.stringify(template)); - parsedTemplate.rpcPort = 8900 + i; - parsedTemplate.network.port = 9000 + i; - parsedTemplate.graphDatabase.name = `node${i}`; + const polygonEndpoints = [ + 'wss://polygon-mumbai.g.alchemy.com/v2/HWQYg3FX49VALP0FMMZxKhZDVrIRDiMo', + 'wss://polygon-mumbai.g.alchemy.com/v2/A5XW59zlZH8Q4NYvHPOByry6RpYHVsZG', + 'wss://polygon-mumbai.g.alchemy.com/v2/pjhHpEpgUyQcKde6lZGNK9i5DStsfg8P', + 'wss://polygon-mumbai.g.alchemy.com/v2/PS344yOFOjNVjy7l4HywB824lD-tELBj', + 'wss://polygon-mumbai.g.alchemy.com/v2/o1tqYf3FW4dFZMhKw5Pjrv1M9grn485F', + ]; + + for (const implementation in parsedTemplate.modules.blockchain.implementation) { + if (implementation === 'polygon') { + parsedTemplate.modules.blockchain.implementation[implementation].config.rpcEndpoints = [ + polygonEndpoints[i - 1], + 'https://matic-mumbai.chainstacklabs.com', + 'https://rpc-mumbai.matic.today', + 'https://matic-testnet-archive-rpc.bwarelabs.com', + ]; + } + parsedTemplate.modules.blockchain.implementation[ + implementation + ].config.evmOperationalWalletPublicKey = keys.publicKey[i + 1]; + parsedTemplate.modules.blockchain.implementation[ + implementation + ].config.evmOperationalWalletPrivateKey = keys.privateKey[i + 1]; + parsedTemplate.modules.blockchain.implementation[ + implementation + ].config.evmManagementWalletPublicKey = keys.managementKey; + } + + parsedTemplate.modules.httpClient.implementation['express-http-client'].config.port = 8900 + i; + parsedTemplate.modules.network.implementation['libp2p-service'].config.port = 9000 + i; + parsedTemplate.modules.repository.implementation[ + 'sequelize-repository' + ].config.database = `operationaldb${i}`; + parsedTemplate.modules.tripleStore.implementation[ + 'ot-graphdb' + ].config.repository = `repository${i}`; + parsedTemplate.appDataPath = `data${i}`; + + if (process.env.LOG_LEVEL) { + parsedTemplate.logLevel = process.env.LOG_LEVEL; + } fs.writeFileSync(`${configPath}`, JSON.stringify(parsedTemplate, null, 2)); } diff --git a/tools/local-network-setup/keys.json b/tools/local-network-setup/keys.json new file mode 100644 index 000000000..d0d39e665 --- /dev/null +++ b/tools/local-network-setup/keys.json @@ -0,0 +1,61 @@ +{ + "publicKey": ["0xd6879C0A03aDD8cFc43825A42a3F3CF44DB7D2b9", + "0x2f2697b2a7BB4555687EF76f8fb4C3DFB3028E57", + "0xBCc7F04c73214D160AA6C892FcA6DB881fb3E0F5", + "0xE4745cE633c2a809CDE80019D864538ba95201E3", + "0x193a22749001fA75497fb8fcCE11235947a19b3d", + "0xFFEE9a020c3DdDE30D0391254E05c8Fe8DC4a680", + "0xBBC863B0776f5F8F816dD71e85AaA81449A87D9A", + "0x64B592e8e9AF51Eb0DBa5d4c18b817C01e8e75a8", + "0xb664cf668534FDE04cF43173e2187b7a9196bfC3", + "0xCE81B24feDb116FaC5A887ED7706B05A46060079", + "0xcF9c758Ae7C21D8048Fc1C3cb6164Ff37A5b205e", + "0xC8b866F2dD57d2889a7cccB989cfb42dB4579411", + "0xD242D54ed86A64909d0f990bCe608b065ed07559", + "0x3368d4DBeC10220D7Ba73c3FC65977ED215C62Fc", + "0x9d2934024ccC3995056E7E067184B3B0bB8B66Ab", + "0x73DF1C18F18AA54DB018b3273E44b1A4713c5fE2", + "0xd2c714a04fEA61C599815ec57fAf25ba4F4d496B", + "0xBA9d00b748217381674E277D2447fcaCB78bcAc7", + "0x34734d828d39ce0B3C8ad22B8578Cd2E3236F277", + "0xCF4d6f24Ca163D14389C38DD0C7e89718d17090a", + "0xD15Eb6bF044ed36DfDd2e3a3b84aB81AaB15881D", + "0x06FD6319da4199BD55AA283787b9fd802082191d", + "0xc3C828F5B357638265cC09Dd479F60A8E1190801", + "0x50d2af71026c60648c612190ce92e8257c69B419", + "0x4e6c7afa684B54980aE15aEA191911E3D9B47aba", + "0x4a68eD404bBd120a3bdab1748dc36EE43a5AE42d", + "0xDdbc8EA86Ec762AA4a7aC985fF3c7E7087be9e3B", + "0xf68B2609F1E240e501D78c78276D7314ba298025", + "0xBaF76aC0d0ef9a2FFF76884d54C9D3e270290a43"], + "privateKey": ["0x02b39cac1532bef9dba3e36ec32d3de1e9a88f1dda597d3ac6e2130aed9adc4e", + "0xb1c53fd90d0172ff60f14f61f7a09555a9b18aa3c371991d77209cfe524e71e6", + "0x8ab3477bf3a1e0af66ab468fafd6cf982df99a59fee405d99861e7faf4db1f7b", + "0xc80796c049af64d07c76ab4cfb00655895368c60e50499e56cdc3c38d09aa88e", + "0x239d785cea7e22f23d1fa0f22a7cb46c04d81498ce4f2de07a9d2a7ceee45004", + "0x021336479aa1553e42bfcd3b928dee791db84a227906cb7cec5982d382ecf106", + "0x217479bee25ed6d28302caec069c7297d0c3aefdda81cf91ed754c4d660862ae", + "0xa050f7b3a0479a55e9ddd074d218fbfea302f061e9f21a117a2ec1f0b986a363", + "0x0dbaee2066aacd16d43a9e23649f232913bca244369463320610ffe6ffb0d69d", + "0x63b854ff0d973dbd4808a6def4c6a7f65bebcaec07520fbf1c0056331af65a7b", + "0x7dc40fb38b9a96a63529abb4549d84e0c08e8b923e178150e867685730eadf00", + "0xfc755938afe379af87c44623bbe70ffa1b3f452a9b9807d75bb27ebe18681286", + "0x8656c6fba3b82ca3ee5cc60d5e56aaa9e50f73856f69eeb919dbf4c2d1728728", + "0x89d29d67bbf973542efad822c706d7aa5eb0c655ff4b3f3af84fa64dce1149e5", + "0xf0c1ca9b1e6c08b8cf8cf0ebf946d1d2bae2cb33c3cd1721962dd41a4bf1982c", + "0xd9232a58d9a25751dbba8967d43cd4cd87af081db1b22fce72ce0bc92640a7a7", + "0xa8755e9fb4643aab2b7109afb4b32821df3c236fae60156f0324086035b88e67", + "0x5d9927a5244623afb1e7f590c7946682620d759724ac86c96792cee6900fd973", + "0x223c9895f73f3b60a7fe928db1a9864669d1d21dce153a9928285d0d3c20b066", + "0xf5f845f7e25649083fee349afea795e4f587ba1708f1b8c8686e88288fb36197", + "0x867cede8866075a0e5aaacb429019582a87f47929f885902d7d6ba87174b465b", + "0x4f2c9e35799519aab320afe1b2522d24b8edc2b331ce74feaa73d387c0d6515a", + "0x46347bff764b0e793ae8607146d49ae677b51fbc31bb150eaddce9d52b2d2ab1", + "0x394117b491034f898c5945219f583d521b7c514c37c7002c398156b05f877863", + "0x69d771fd096a6ff182954d19dc7f9be68de624648d816ec8ef1b718a0277f882", + "0x411841f090a0cc9f2404f24d7d2db707652e76fd1819446149f2c8b0b44124e2", + "0x7329d841a68f2f25a57f34195ce63eca4b477dd587f3a78554181a588dcd9002", + "0x50409e18b20ba522c909a296b3c378af1c31fb458aa6478988c260b78956ab3d", + "0x9b9af041edc816692276ac3c8f1d5565e3c01ddff80ec982943a29bd8d1d8863"], + "managementKey": "0x1B420da5f7Be66567526E32bc68ab29F1A63765A" +} \ No newline at end of file diff --git a/tools/ot-parachain-account-mapping/create-account-mapping-signature.js b/tools/ot-parachain-account-mapping/create-account-mapping-signature.js new file mode 100644 index 000000000..e6b168489 --- /dev/null +++ b/tools/ot-parachain-account-mapping/create-account-mapping-signature.js @@ -0,0 +1,87 @@ +/* eslint-disable import/no-extraneous-dependencies */ +const { Wallet } = require('@ethersproject/wallet'); +const { joinSignature } = require('@ethersproject/bytes'); +const { _TypedDataEncoder } = require('@ethersproject/hash'); +const { u8aToHex } = require('@polkadot/util'); +const { decodeAddress } = require('@polkadot/util-crypto'); + +if (!process.argv[2]) { + console.log('Missing argument PRIVATE_ETH_KEY'); + console.log( + 'Usage: npm run create-account-mapping-signature PRIVATE_ETH_KEY SUBSTRATE_PUBLIC_KEY', + ); + process.exit(1); +} + +if (!process.argv[3]) { + console.log('Missing argument SUBSTRATE_PUBLIC_KEY'); + console.log( + 'Usage: npm run create-account-mapping-signature PRIVATE_ETH_KEY SUBSTRATE_PUBLIC_KEY', + ); + process.exit(1); +} + +const PRIVATE_ETH_KEY = process.argv[2]; +const PUBLIC_SUBSTRATE_ADDRESS = process.argv[3]; +const HEX_SUBSTRATE_ADDRESS = u8aToHex(decodeAddress(PUBLIC_SUBSTRATE_ADDRESS)); +// Usage +// node create-signature.js private_eth_key(with 0x) substrate_public_key + +async function sign() { + const payload = { + types: { + EIP712Domain: [ + { + name: 'name', + type: 'string', + }, + { + name: 'version', + type: 'string', + }, + { + name: 'chainId', + type: 'uint256', + }, + { + name: 'salt', + type: 'bytes32', + }, + ], + Transaction: [ + { + name: 'substrateAddress', + type: 'bytes', + }, + ], + }, + primaryType: 'Transaction', + domain: { + name: 'OTP EVM claim', + version: '1', + chainId: '2160', + salt: '0x0542e99b538e30d713d3e020f18fa6717eb2c5452bd358e0dd791628260a36f0', + }, + message: { + substrateAddress: `${HEX_SUBSTRATE_ADDRESS}`, + }, + }; + + const wallet = new Wallet(`${PRIVATE_ETH_KEY}`); + + const digest = _TypedDataEncoder.hash( + payload.domain, + { + Transaction: payload.types.Transaction, + }, + payload.message, + ); + + const signature = joinSignature(wallet._signingKey().signDigest(digest)); + console.log('Paste the signature to polkadot.js api evmAddress claimAccount interface:'); + console.log('==== Signature ===='); + console.log(signature); + console.log('==================='); +} + +sign(); diff --git a/tools/token-generation.js b/tools/token-generation.js new file mode 100644 index 000000000..b6cd6be96 --- /dev/null +++ b/tools/token-generation.js @@ -0,0 +1,174 @@ +/* eslint no-console: 0 */ +const ms = require('ms'); +const DeepExtend = require('deep-extend'); +const rc = require('rc'); +const fs = require('fs-extra'); +const uuid = require('uuid').v4; +const Logger = require('../src/logger/logger'); +const configjson = require('../config/config.json'); +const pjson = require('../package.json'); +const RepositoryModuleManager = require('../src/modules/repository/repository-module-manager'); +require('dotenv').config(); +const jwtUtil = require('../src/service/util/jwt-util'); + +const getLogger = () => new Logger('silent', false); +let repository; + +const getConfig = () => { + let config; + let userConfig; + + if (process.env.USER_CONFIG_PATH) { + const configurationFilename = process.env.USER_CONFIG_PATH; + const pathSplit = configurationFilename.split('/'); + userConfig = JSON.parse(fs.readFileSync(configurationFilename)); + userConfig.configFilename = pathSplit[pathSplit.length - 1]; + } + + const defaultConfig = JSON.parse(JSON.stringify(configjson[process.env.NODE_ENV])); + + if (userConfig) { + config = DeepExtend(defaultConfig, userConfig); + } else { + config = rc(pjson.name, defaultConfig); + } + + if (!config.configFilename) { + // set default user configuration filename + config.configFilename = '.origintrail_noderc'; + } + return config; +}; + +const loadRepository = async () => { + repository = new RepositoryModuleManager({ logger: getLogger(), config: getConfig() }); + await repository.initialize(); +}; + +/** + * Returns argument from argv + * @param argName + * @returns {string|null} + */ +const getArg = (argName) => { + const args = process.argv; + const arg = args.find((a) => a.startsWith(argName)); + + if (!arg) { + return null; + } + + const argSplit = arg.split('='); + + if (!arg || argSplit.length < 2 || !argSplit[1]) { + return null; + } + + return argSplit[1]; +}; +/** + * Returns user's name from arguments + * @returns {string} + */ +const getUserFromArgs = () => { + const arg = getArg('--user'); + + if (!arg) { + return 'node-runner'; + } + + return arg; +}; + +/** + * Returns expiresAt from arguments + * If no expiresAt is provided, null is returned + * Expressed in seconds or a string describing a time span zeit/ms + * @returns {string|null} + */ +const getExpiresInArg = () => { + const arg = getArg('--expiresIn'); + + if (!arg) { + return null; + } + + if (!ms(arg)) { + console.log('\x1b[31m[ERROR]\x1b[0m Invalid value for expiresIn argument'); + process.exit(1); + } + + return arg; +}; + +/** + * Returns expiresAt from arguments + * If no expiresAt is provided, null is returned + * Expressed in seconds or a string describing a time span zeit/ms + * @returns {string|null} + */ +const getTokenName = () => { + const arg = getArg('--tokenName'); + + if (!arg) { + console.log('\x1b[31m[ERROR]\x1b[0m Missing mandatory tokenName argument.'); + process.exit(1); + } + + return arg; +}; + +const saveTokenData = async (tokenId, userId, tokenName, expiresIn) => { + let expiresAt = null; + + if (expiresIn) { + const time = new Date().getTime() + ms(expiresIn); + expiresAt = new Date(time); + } + + await repository.saveToken(tokenId, userId, tokenName, expiresAt); +}; + +const printMessage = (token, hasExpiryDate) => { + console.log('\x1b[32mAccess token successfully created.\x1b[0m '); + + if (!hasExpiryDate) { + console.log('\x1b[33m[WARNING] Created token has no expiry date. \x1b[0m '); + } + + console.log(token); + console.log( + '\x1b[32mMake sure to copy your personal access token now. You won’t be able to see it again!\x1b[0m ', + ); +}; + +const getUserId = async (username) => { + const user = await repository.getUser(username); + + if (!user) { + console.log(`\x1b[31m[ERROR]\x1b[0m User ${username} doesn't exist.`); + process.exit(1); + } + + return user.id; +}; + +const generateToken = async () => { + const username = getUserFromArgs(); + const expiresIn = getExpiresInArg(); + const tokenName = getTokenName(); + + await loadRepository(); + + const userId = await getUserId(username); + const tokenId = uuid(); + + await saveTokenData(tokenId, userId, tokenName, expiresIn); + + const token = jwtUtil.generateJWT(tokenId, expiresIn); + + printMessage(token, expiresIn); + process.exit(0); +}; + +generateToken();