{
  "contractName": "Ownable2Step",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "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"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"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\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"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 access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/patterns/Ownable2Step.sol\":\"Ownable2Step\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"project:/contracts/patterns/Ownable.sol\":{\"keccak256\":\"0x494bda32f9a218d9c33ea82112129c0933ab52f57eabfbf0d14a8742a3370800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c4cf04ebb052fed9d15cf93ff4523955ee311aa4425ee85f0e80b4489c94e76\",\"dweb:/ipfs/QmfMf4WD7woTaQSTbJxxoan2aXSeY7ovY5NoipSBw5rMPK\"]},\"project:/contracts/patterns/Ownable2Step.sol\":{\"keccak256\":\"0x45ed9d1f98e2a7a5bd1a7040dbd4292f1458fa1cb212d0143718684efa436bd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45d347c5ef492b33dcf3953bb3911fe7160a6c812e69ed84d2511f0847e19229\",\"dweb:/ipfs/QmZp3icE2gQBoJp8KorWC1GfGC8mK29sK9fEveKRMNCY1U\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity ^0.8.0;\r\n\r\nimport \"./Ownable.sol\";\r\n\r\n/**\r\n * @dev Contract module which provides access control mechanism, where\r\n * there is an account (an owner) that can be granted exclusive access to\r\n * specific functions.\r\n *\r\n * The initial owner is specified at deployment time in the constructor for `Ownable`. This\r\n * can later be changed with {transferOwnership} and {acceptOwnership}.\r\n *\r\n * This module is used through inheritance. It will make available all functions\r\n * from parent (Ownable).\r\n */\r\nabstract contract Ownable2Step is Ownable {\r\n    address private _pendingOwner;\r\n\r\n    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);\r\n\r\n    /**\r\n     * @dev Returns the address of the pending owner.\r\n     */\r\n    function pendingOwner() public view virtual returns (address) {\r\n        return _pendingOwner;\r\n    }\r\n\r\n    /**\r\n     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\r\n     * Can only be called by the current owner.\r\n     */\r\n    function transferOwnership(address newOwner) public virtual override onlyOwner {\r\n        _pendingOwner = newOwner;\r\n        emit OwnershipTransferStarted(owner(), newOwner);\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\r\n     * Internal function without access restriction.\r\n     */\r\n    function _transferOwnership(address newOwner) internal virtual override {\r\n        delete _pendingOwner;\r\n        super._transferOwnership(newOwner);\r\n    }\r\n\r\n    /**\r\n     * @dev The new owner accepts the ownership transfer.\r\n     */\r\n    function acceptOwnership() public virtual {\r\n        address sender = _msgSender();\r\n        if (pendingOwner() != sender) {\r\n            revert(\"Ownable2Step: caller is not the new owner\");\r\n        }\r\n        _transferOwnership(sender);\r\n    }\r\n}\r\n",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\patterns\\Ownable2Step.sol",
  "ast": {
    "absolutePath": "project:/contracts/patterns/Ownable2Step.sol",
    "exportedSymbols": {
      "Context": [
        523
      ],
      "Ownable": [
        415
      ],
      "Ownable2Step": [
        45709
      ]
    },
    "id": 45710,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 45626,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:23:131"
      },
      {
        "absolutePath": "project:/contracts/patterns/Ownable.sol",
        "file": "./Ownable.sol",
        "id": 45627,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 45710,
        "sourceUnit": 45625,
        "src": "62:23:131",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 45629,
              "name": "Ownable",
              "nameLocations": [
                "587:7:131"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 415,
              "src": "587:7:131"
            },
            "id": 45630,
            "nodeType": "InheritanceSpecifier",
            "src": "587:7:131"
          }
        ],
        "canonicalName": "Ownable2Step",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 45628,
          "nodeType": "StructuredDocumentation",
          "src": "89:462:131",
          "text": " @dev Contract module which provides access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is specified at deployment time in the constructor for `Ownable`. This\n can later be changed with {transferOwnership} and {acceptOwnership}.\n This module is used through inheritance. It will make available all functions\n from parent (Ownable)."
        },
        "fullyImplemented": true,
        "id": 45709,
        "linearizedBaseContracts": [
          45709,
          415,
          523
        ],
        "name": "Ownable2Step",
        "nameLocation": "571:12:131",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 45632,
            "mutability": "mutable",
            "name": "_pendingOwner",
            "nameLocation": "618:13:131",
            "nodeType": "VariableDeclaration",
            "scope": 45709,
            "src": "602:29:131",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 45631,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "602:7:131",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "eventSelector": "38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700",
            "id": 45638,
            "name": "OwnershipTransferStarted",
            "nameLocation": "646:24:131",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 45637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45634,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "previousOwner",
                  "nameLocation": "687:13:131",
                  "nodeType": "VariableDeclaration",
                  "scope": 45638,
                  "src": "671:29:131",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45633,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:7:131",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45636,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "newOwner",
                  "nameLocation": "718:8:131",
                  "nodeType": "VariableDeclaration",
                  "scope": 45638,
                  "src": "702:24:131",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "702:7:131",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "670:57:131"
            },
            "src": "640:88:131"
          },
          {
            "body": {
              "id": 45646,
              "nodeType": "Block",
              "src": "871:39:131",
              "statements": [
                {
                  "expression": {
                    "id": 45644,
                    "name": "_pendingOwner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 45632,
                    "src": "889:13:131",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 45643,
                  "id": 45645,
                  "nodeType": "Return",
                  "src": "882:20:131"
                }
              ]
            },
            "documentation": {
              "id": 45639,
              "nodeType": "StructuredDocumentation",
              "src": "736:67:131",
              "text": " @dev Returns the address of the pending owner."
            },
            "functionSelector": "e30c3978",
            "id": 45647,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "pendingOwner",
            "nameLocation": "818:12:131",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 45640,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "830:2:131"
            },
            "returnParameters": {
              "id": 45643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45642,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 45647,
                  "src": "862:7:131",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "862:7:131",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "861:9:131"
            },
            "scope": 45709,
            "src": "809:101:131",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              394
            ],
            "body": {
              "id": 45666,
              "nodeType": "Block",
              "src": "1188:102:131",
              "statements": [
                {
                  "expression": {
                    "id": 45658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 45656,
                      "name": "_pendingOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45632,
                      "src": "1199:13:131",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 45657,
                      "name": "newOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45650,
                      "src": "1215:8:131",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1199:24:131",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 45659,
                  "nodeType": "ExpressionStatement",
                  "src": "1199:24:131"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 45661,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 335,
                          "src": "1264:5:131",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 45662,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1264:7:131",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 45663,
                        "name": "newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45650,
                        "src": "1273:8:131",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 45660,
                      "name": "OwnershipTransferStarted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45638,
                      "src": "1239:24:131",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 45664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1239:43:131",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 45665,
                  "nodeType": "EmitStatement",
                  "src": "1234:48:131"
                }
              ]
            },
            "documentation": {
              "id": 45648,
              "nodeType": "StructuredDocumentation",
              "src": "918:185:131",
              "text": " @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.\n Can only be called by the current owner."
            },
            "functionSelector": "f2fde38b",
            "id": 45667,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 45654,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 45653,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "1178:9:131"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 326,
                  "src": "1178:9:131"
                },
                "nodeType": "ModifierInvocation",
                "src": "1178:9:131"
              }
            ],
            "name": "transferOwnership",
            "nameLocation": "1118:17:131",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 45652,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1169:8:131"
            },
            "parameters": {
              "id": 45651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45650,
                  "mutability": "mutable",
                  "name": "newOwner",
                  "nameLocation": "1144:8:131",
                  "nodeType": "VariableDeclaration",
                  "scope": 45667,
                  "src": "1136:16:131",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45649,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1136:7:131",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1135:18:131"
            },
            "returnParameters": {
              "id": 45655,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1188:0:131"
            },
            "scope": 45709,
            "src": "1109:181:131",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              414
            ],
            "body": {
              "id": 45683,
              "nodeType": "Block",
              "src": "1552:84:131",
              "statements": [
                {
                  "expression": {
                    "id": 45675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1563:20:131",
                    "subExpression": {
                      "id": 45674,
                      "name": "_pendingOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45632,
                      "src": "1570:13:131",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 45676,
                  "nodeType": "ExpressionStatement",
                  "src": "1563:20:131"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 45680,
                        "name": "newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45670,
                        "src": "1619:8:131",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 45677,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967271,
                        "src": "1594:5:131",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_Ownable2Step_$45709_$",
                          "typeString": "type(contract super Ownable2Step)"
                        }
                      },
                      "id": 45679,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1600:18:131",
                      "memberName": "_transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 414,
                      "src": "1594:24:131",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 45681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1594:34:131",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 45682,
                  "nodeType": "ExpressionStatement",
                  "src": "1594:34:131"
                }
              ]
            },
            "documentation": {
              "id": 45668,
              "nodeType": "StructuredDocumentation",
              "src": "1298:176:131",
              "text": " @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.\n Internal function without access restriction."
            },
            "id": 45684,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transferOwnership",
            "nameLocation": "1489:18:131",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 45672,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1543:8:131"
            },
            "parameters": {
              "id": 45671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45670,
                  "mutability": "mutable",
                  "name": "newOwner",
                  "nameLocation": "1516:8:131",
                  "nodeType": "VariableDeclaration",
                  "scope": 45684,
                  "src": "1508:16:131",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45669,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1508:7:131",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1507:18:131"
            },
            "returnParameters": {
              "id": 45673,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1552:0:131"
            },
            "scope": 45709,
            "src": "1480:156:131",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 45707,
              "nodeType": "Block",
              "src": "1763:203:131",
              "statements": [
                {
                  "assignments": [
                    45689
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 45689,
                      "mutability": "mutable",
                      "name": "sender",
                      "nameLocation": "1782:6:131",
                      "nodeType": "VariableDeclaration",
                      "scope": 45707,
                      "src": "1774:14:131",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 45688,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1774:7:131",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 45692,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 45690,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 505,
                      "src": "1791:10:131",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 45691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1791:12:131",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1774:29:131"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 45696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 45693,
                        "name": "pendingOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45647,
                        "src": "1818:12:131",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                          "typeString": "function () view returns (address)"
                        }
                      },
                      "id": 45694,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1818:14:131",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 45695,
                      "name": "sender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45689,
                      "src": "1836:6:131",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1818:24:131",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 45702,
                  "nodeType": "IfStatement",
                  "src": "1814:108:131",
                  "trueBody": {
                    "id": 45701,
                    "nodeType": "Block",
                    "src": "1844:78:131",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572",
                              "id": 45698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1866:43:131",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc",
                                "typeString": "literal_string \"Ownable2Step: caller is not the new owner\""
                              },
                              "value": "Ownable2Step: caller is not the new owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_225559eb8402045bea7ff07c35d0ad8c0547830223ac1c21d44fb948d6896ebc",
                                "typeString": "literal_string \"Ownable2Step: caller is not the new owner\""
                              }
                            ],
                            "id": 45697,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967277,
                              4294967277
                            ],
                            "referencedDeclaration": 4294967277,
                            "src": "1859:6:131",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 45699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1859:51:131",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 45700,
                        "nodeType": "ExpressionStatement",
                        "src": "1859:51:131"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 45704,
                        "name": "sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45689,
                        "src": "1951:6:131",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 45703,
                      "name": "_transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        45684
                      ],
                      "referencedDeclaration": 45684,
                      "src": "1932:18:131",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 45705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1932:26:131",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 45706,
                  "nodeType": "ExpressionStatement",
                  "src": "1932:26:131"
                }
              ]
            },
            "documentation": {
              "id": 45685,
              "nodeType": "StructuredDocumentation",
              "src": "1644:71:131",
              "text": " @dev The new owner accepts the ownership transfer."
            },
            "functionSelector": "79ba5097",
            "id": 45708,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "acceptOwnership",
            "nameLocation": "1730:15:131",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 45686,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1745:2:131"
            },
            "returnParameters": {
              "id": 45687,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1763:0:131"
            },
            "scope": 45709,
            "src": "1721:245:131",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 45710,
        "src": "553:1416:131",
        "usedErrors": [
          281,
          286
        ],
        "usedEvents": [
          292,
          45638
        ]
      }
    ],
    "src": "35:1936:131"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:46.050Z",
  "devdoc": {
    "details": "Contract module which provides access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is specified at deployment time in the constructor for `Ownable`. This can later be changed with {transferOwnership} and {acceptOwnership}. This module is used through inheritance. It will make available all functions from parent (Ownable).",
    "errors": {
      "OwnableInvalidOwner(address)": [
        {
          "details": "The owner is not a valid owner account. (eg. `address(0)`)"
        }
      ],
      "OwnableUnauthorizedAccount(address)": [
        {
          "details": "The caller account is not authorized to perform an operation."
        }
      ]
    },
    "kind": "dev",
    "methods": {
      "acceptOwnership()": {
        "details": "The new owner accepts the ownership transfer."
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "pendingOwner()": {
        "details": "Returns the address of the pending owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}