{
  "contractName": "IdentityMock",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "BlacklistAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "BlacklistRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ContractAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ContractRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "IdentityAdminAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "IdentityAdminRemoved",
      "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": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "PauserAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "PauserRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "WhitelistedAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "WhitelistedRemoved",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addBlacklisted",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addIdentityAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addPauser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "did",
          "type": "string"
        }
      ],
      "name": "addWhitelistedWithDID",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "addrToDID",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "authenticationPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "contracts",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "dateAdded",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "dateAuthenticated",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "didHashToAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isBlacklisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isIdentityAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isPauser",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "scheme",
          "type": "address"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isWhitelisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "lastAuthenticated",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "removeBlacklisted",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "removeIdentityAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceIdentityAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renouncePauser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceWhitelisted",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "setAuthenticationPeriod",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "setAvatar",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "whitelistedContracts",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "whitelistedCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addWhitelisted",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "removeWhitelisted",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "removeContract",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addContract",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isDAOContract",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "authenticate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"BlacklistAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"BlacklistRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"ContractAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"ContractRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"IdentityAdminAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"IdentityAdminRemoved\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistedAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistedRemoved\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addBlacklisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addIdentityAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"did\",\"type\":\"string\"}],\"name\":\"addWhitelistedWithDID\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"addrToDID\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"authenticate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"authenticationPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"contracts\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dateAdded\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dateAuthenticated\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"didHashToAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isBlacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDAOContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isIdentityAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"scheme\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"lastAuthenticated\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeBlacklisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeIdentityAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceIdentityAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"setAuthenticationPeriod\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Avatar\",\"name\":\"_avatar\",\"type\":\"address\"}],\"name\":\"setAvatar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"whitelistedContracts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"whitelistedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"addIdentityAdmin(address)\":{\"details\":\"Adds a identity admin account. Is only callable by owner.\",\"params\":{\"account\":\"Address to be added\"},\"return\":\"true if successful\"},\"isIdentityAdmin(address)\":{\"details\":\"Checks if account is identity admin\",\"params\":{\"account\":\"Account to check\"},\"return\":\"Boolean indicating if account is identity admin\"},\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"isRegistered()\":{\"details\":\"function to see if an avatar has been set and if this scheme is registered\",\"return\":\"true if scheme is registered\"},\"isRegistered(address)\":{\"details\":\"function to see if an avatar has been set and if this scheme is registered\",\"return\":\"true if scheme is registered\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"pause()\":{\"details\":\"called by the owner to pause, triggers stopped state\"},\"paused()\":{\"return\":\"true if the contract is paused, false otherwise.\"},\"removeIdentityAdmin(address)\":{\"details\":\"Removes a identity admin account. Is only callable by owner.\",\"params\":{\"account\":\"Address to be removed\"},\"return\":\"true if successful\"},\"renounceIdentityAdmin()\":{\"details\":\"Allows an admin to renounce their role\"},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"setAvatar(address)\":{\"details\":\"Function to set a new avatar and controller for scheme can only be done by owner of scheme\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}},\"unpause()\":{\"details\":\"called by the owner to unpause, returns to normal state\"}},\"title\":\"A Identity mock. Ignores the scheme registration. Those tests can be found on e2e tests.\"},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/IdentityMock.sol\":\"IdentityMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/SchemeGuard.sol\":{\"keccak256\":\"0x32e1b2a172e2c22a6aa757bfcb0722cc67f64c5c2e48df3dec2737903516d565\",\"urls\":[\"bzz-raw://bee57a8eba08348e93a0c18f3ab534e67865c0fa27afe27f5cf234bd5f248915\",\"dweb:/ipfs/Qmd8aveHWcUkYWMyJrJRZPyVXj8MAMBfpBFo6g4Z2VJeo3\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/Identity.sol\":{\"keccak256\":\"0x282184478f1d618d3523b28a84a7f7003dfdc99cad120e5e358d2cce1f5fb491\",\"urls\":[\"bzz-raw://67e17ecb57b24c4fb801abc2c52c3148af3b967e28da4fb7e074d18efb7a57c1\",\"dweb:/ipfs/QmfZ8jXhdTHtxr3gfByRj4HnXnGynX7SLZWWGR8k768aGB\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityAdminRole.sol\":{\"keccak256\":\"0x8e82c45eefe0da77d017144dfad12602c68124297035937901cdd08ce48c57ff\",\"urls\":[\"bzz-raw://e20e606342b3b35f41a081294cf3f716fe7e27e81d3090daa37c5208f4ef4bc3\",\"dweb:/ipfs/QmVEhHpiwVsksnPyHkfNa5LpTBLxoP9kj5NRZUBv456ewK\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/IdentityMock.sol\":{\"keccak256\":\"0x8a55cd21348e769510ff390477aead1330fb7508745d1cad551a0b18acf7237e\",\"urls\":[\"bzz-raw://0d94e29109013c7084e2cc51c49501c2cebb2721be053b8810df7a7b1cf35742\",\"dweb:/ipfs/QmZmAMAgUx2QkQqQWnFPCzNN4h6ZX86FbqnNHh7cHvrZkj\"]},\"@daostack/arc/contracts/controller/Avatar.sol\":{\"keccak256\":\"0x4e4fb9d3bc21f42fbfc6a01e9f8aa483a59e9f447b0d604f55b587a81ec09ef4\",\"urls\":[\"bzz-raw://9d3c1c7575cf6075ea1d89921f09b9b8e322b208dacaf0446cd4f64506c999f0\",\"dweb:/ipfs/QmVGDDHAR2ByuQpbgV7BBKXGEAcbaWvejpEZYzHgaagBFK\"]},\"@daostack/arc/contracts/controller/ControllerInterface.sol\":{\"keccak256\":\"0x933e92612c90f292c7b59908958b003f1a13d90b97bed0572b566353c20974dc\",\"urls\":[\"bzz-raw://ce1fcf85b744fcce2dbd4205e3943e9b4ec36a5f0330d4bbf61e65f1a3e0e470\",\"dweb:/ipfs/QmUWiLkBDdekhpy93nTzBtxDHL6yNh6sTUM9G8VbsHcBzy\"]},\"@daostack/arc/contracts/controller/DAOToken.sol\":{\"keccak256\":\"0x9b213e4e3ceeffcfc1c962a43b70b8d763d8091a2dd713fc1989b97bb68786e6\",\"urls\":[\"bzz-raw://51d1d6e85fd90f45395a16b7a3c703c4636e836041f2a13f806e4222ef2e59c1\",\"dweb:/ipfs/QmQjeCeFf7TJzsYjT5scyZUDDixBA8Yy8YppgBuxcKPDnP\"]},\"@daostack/arc/contracts/globalConstraints/GlobalConstraintInterface.sol\":{\"keccak256\":\"0xc006c4591ec10b845a56e13f6791db2c428610953034686d52b2a934b6c8f36f\",\"urls\":[\"bzz-raw://19495cd88280e54d7ddcd043ffeff75e6d3777a0c42debcd61cae448e9497ea0\",\"dweb:/ipfs/QmYxWz7CgFmmddrcVXJKfob5Ktwykc2imNVUwLSR5WR8bJ\"]},\"@daostack/arc/contracts/libs/SafeERC20.sol\":{\"keccak256\":\"0xf6727d432f67046145b078f40c1cc4f6be7b0d12a6678ecaf457edf7550d244c\",\"urls\":[\"bzz-raw://5dba7734c4fed446c084a707761cbc66ba22b8b93ef53c8d4a22a76b6e271690\",\"dweb:/ipfs/QmP2VpPKUqLh4ZZs6LaxHVpCN1zCmiorygL9bMub4mbYCw\"]},\"@daostack/infra/contracts/Reputation.sol\":{\"keccak256\":\"0x3d226dac0fe7d758f0287fb28bc25fcec1f69d19888ae3a550fa49856d61c482\",\"urls\":[\"bzz-raw://8856852c8fe0ba1c9aab326f0a9a6e7f31a238de2778fa5188e6fc399f7eb352\",\"dweb:/ipfs/QmVH4ppR9Dk7v8yxaSgeArdMv9gBBVoQxEf4E3UsqQ4rY2\"]},\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzz-raw://4ca6617349a9b36fd82e9442a8e445ce9021a174e4399d1457ddc894ee3f5df3\",\"dweb:/ipfs/QmcmyB4cNazZ1sw963Afaijt67M9bDgwmGXCgQajGTD4tm\"]},\"openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x6506133e295a7199df2ac5dfc52853d9d767f68450b6d0193e9d8056b164ce86\",\"urls\":[\"bzz-raw://9c03592a9e6b1377e401b74eccf175a250232b5a341347d3fc5cb50e9bc86ba2\",\"dweb:/ipfs/QmYAr1yXT89hNUMJ37aiBpD9HtYfBDqmueVCzphRuuU7oZ\"]},\"openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x3b0ed31deeba7e3c6cfbbe8092a6b427084ee390800a06acdea5c17c8185d606\",\"urls\":[\"bzz-raw://bbdbf9d3754fcdcc85aec0432fabcec914317b1c2081b43753442ed53853a34a\",\"dweb:/ipfs/QmVHWQBn5xQkQEHhyGNEeS5gjjALZEk5ZfcjFt7kL6MoLy\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzz-raw://f40c91ca270bdc9b156f339081a0fc2bbcf73cf5f62b8c73ba555df753ff6619\",\"dweb:/ipfs/QmT8y2VVjGaFdGphpcXrgvdPi2EgF9LuCDgJiJ89LvpFRV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0xa3e68fd7f987c8fbdaf4867d428a69a15f3cf2f69709a5b0a0fbef750b0e6fbc\",\"urls\":[\"bzz-raw://50b1ff986d3b2793850a66c8429d9886fdfb134b1509b3e98714e3e2a71e24f5\",\"dweb:/ipfs/QmSQBYPeY9tbR3ciGRNQqvcWKnNiuxtVMq2MsPWpLwuGGm\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzz-raw://ee762ff5b7746e41d27dcbcea00c7a3034b58adb1b45ddadddb5b721aff450df\",\"dweb:/ipfs/QmdxqtgEFZjHCoiYyz6pUAQ5iBm7As25jcyEbZoTaAgyDa\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x5c731061b804fa256fc8c05150eafe5d20b6bb94541a8f187912bf84f7033f34\",\"urls\":[\"bzz-raw://a3c2d9f046beebab7fb41b1b124a6a124a36f510f7c67365861402ac831bdc71\",\"dweb:/ipfs/QmUtASRgitregbKH83anopLtF9vFQe3BKeAjhUa6F7t9YV\"]}},\"version\":1}",
  "bytecode": "0x6080604052600380546001600160a01b031916905560006009819055600a55600e600b553480156200003057600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b03919091169082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36200008f336001600160e01b036200017916565b600280546001600160a01b0319166001600160a01b03838116919091179182905516156200015457600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010657600080fd5b505afa1580156200011b573d6000803e3d6000fd5b505050506040513d60208110156200013257600080fd5b5051600380546001600160a01b0319166001600160a01b039092169190911790555b5062000169336001600160e01b03620001cb16565b6005805460ff19169055620002ac565b620001948160016200021d60201b6200113a1790919060201c565b6040516001600160a01b038216907f3505858ac30c166c603cb64de4a970615e36a4ed8fea37ba93bc5f11a38dd30990600090a250565b620001e68160046200021d60201b6200113a1790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001600160a01b0381166200023157600080fd5b6200024682826001600160e01b036200027616565b156200025157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200028c57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116be80620002bc6000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c806369dc9ff31161013b578063c3c5a547116100b8578063e5ecaf591161007c578063e5ecaf5914610708578063f2fde38b1461072e578063f7d7f9cc14610754578063fe575a871461077a578063fff930d4146107a05761023d565b8063c3c5a54714610668578063c6a276c21461068e578063c73cc4ae146106b4578063d6cd9473146106da578063e1e360ba146106e25761023d565b80638da5cb5b116100ff5780638da5cb5b146106225780638f32d59b1461062a578063b2a1de2214610632578063b30f7e7f1461063a578063c375c2ef146106425761023d565b806369dc9ff3146105be5780636ef8d66d146105e4578063715018a6146105ec57806382dc1ec4146105f45780638456cb591461061a5761023d565b80632bc298ac116101c957806346fbf68e1161018d57806346fbf68e1461049657806354f9f7a3146104bc5780635c975abb146105575780635f539d691461055f57806367c75937146105855761023d565b80632bc298ac146104025780632ef1afc91461043a57806331b376e2146104605780633af32abf146104685780633f4ba83a1461048e5761023d565b8063188efc1611610210578063188efc16146102be5780631b027099146102e4578063223668441461039a578063291d9549146103b65780632b32e46c146103dc5761023d565b8063086cfca81461024257806308e0d29d1461026a5780630f10a8b81461029057806310154bad14610298575b600080fd5b6102686004803603602081101561025857600080fd5b50356001600160a01b03166107bd565b005b6102686004803603602081101561028057600080fd5b50356001600160a01b0316610878565b610268610894565b610268600480360360208110156102ae57600080fd5b50356001600160a01b031661089f565b610268600480360360208110156102d457600080fd5b50356001600160a01b03166108ab565b610268600480360360408110156102fa57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561032557600080fd5b82018360208201111561033757600080fd5b8035906020019184600183028401116401000000008311171561035957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a5945050505050565b6103a2610a65565b604080519115158252519081900360200190f35b610268600480360360208110156103cc57600080fd5b50356001600160a01b0316610a76565b6103a2600480360360208110156103f257600080fd5b50356001600160a01b0316610a7f565b6104286004803603602081101561041857600080fd5b50356001600160a01b0316610aa4565b60408051918252519081900360200190f35b6104286004803603602081101561045057600080fd5b50356001600160a01b0316610ab6565b610428610ac8565b6103a26004803603602081101561047e57600080fd5b50356001600160a01b0316610ace565b610268610b2e565b6103a2600480360360208110156104ac57600080fd5b50356001600160a01b0316610b8e565b6104e2600480360360208110156104d257600080fd5b50356001600160a01b0316610ba7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561051c578181015183820152602001610504565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a2610c42565b6102686004803603602081101561057557600080fd5b50356001600160a01b0316610c4b565b6105a26004803603602081101561059b57600080fd5b5035610c6f565b604080516001600160a01b039092168252519081900360200190f35b6103a2600480360360208110156105d457600080fd5b50356001600160a01b0316610c8a565b610268610c9f565b610268610ca8565b6102686004803603602081101561060a57600080fd5b50356001600160a01b0316610d03565b610268610d1e565b6105a2610d82565b6103a2610d91565b610428610da2565b610428610da8565b6102686004803603602081101561065857600080fd5b50356001600160a01b03166108a8565b6103a26004803603602081101561067e57600080fd5b50356001600160a01b0316610dae565b610268600480360360208110156106a457600080fd5b50356001600160a01b0316610e92565b6103a2600480360360208110156106ca57600080fd5b50356001600160a01b0316610f8c565b610268610faa565b610428600480360360208110156106f857600080fd5b50356001600160a01b0316610fc3565b6103a26004803603602081101561071e57600080fd5b50356001600160a01b0316610fde565b6102686004803603602081101561074457600080fd5b50356001600160a01b0316610ff1565b6103a26004803603602081101561076a57600080fd5b50356001600160a01b031661100b565b6103a26004803603602081101561079057600080fd5b50356001600160a01b0316611027565b610268600480360360208110156107b657600080fd5b503561103a565b6107c5610d91565b6107ce57600080fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051638da5cb5b60e01b815290519290911691638da5cb5b91600480820192602092909190829003018186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b505050506040513d602081101561085457600080fd5b5051600380546001600160a01b0319166001600160a01b0390921691909117905550565b6001600160a01b03166000908152600c60205260409020429055565b61089d33611060565b565b6108a8816110a8565b50565b6108b3610a65565b6108ff576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b61090833610fde565b61094d576040805162461bcd60e51b81526020600482015260116024820152703737ba1024b232b73a34ba3ca0b236b4b760791b604482015290519081900360640190fd5b60055460ff161561095d57600080fd5b61096e60068263ffffffff61113a16565b6040516001600160a01b038216907f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b87896790600090a250565b6109ad610a65565b6109f9576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610a0233610fde565b610a47576040805162461bcd60e51b81526020600482015260116024820152703737ba1024b232b73a34ba3ca0b236b4b760791b604482015290519081900360640190fd5b60055460ff1615610a5757600080fd5b610a618282611186565b5050565b6000610a7030610dae565b90505b90565b6108a881611254565b6000610a89610d91565b610a9257600080fd5b610a9b826113d3565b5060015b919050565b600d6020526000908152604090205481565b600c6020526000908152604090205481565b600b5481565b6001600160a01b0381166000908152600c602052604081205481906201518090610aff90429063ffffffff61141b16565b81610b0657fe5b049050600b548111158015610b275750610b2760078463ffffffff61143016565b9392505050565b610b3733610b8e565b610b4057600080fd5b60055460ff16610b4f57600080fd5b6005805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6000610ba160048363ffffffff61143016565b92915050565b600e6020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610c3a5780601f10610c0f57610100808354040283529160200191610c3a565b820191906000526020600020905b815481529060010190602001808311610c1d57829003601f168201915b505050505081565b60055460ff1690565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b600f602052600090815260409020546001600160a01b031681565b60106020526000908152604090205460ff1681565b61089d33611465565b610cb0610d91565b610cb957600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610d0c33610b8e565b610d1557600080fd5b6108a8816114ad565b610d2733610b8e565b610d3057600080fd5b60055460ff1615610d4057600080fd5b6005805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60095481565b600a5481565b6002546000906001600160a01b0316610e02576040805162461bcd60e51b8152602060048201526011602482015270105d985d185c881a5cc81b9bdd081cd95d607a1b604482015290519081900360640190fd5b60035460025460408051639be2faed60e01b81526001600160a01b038681166004830152928316602482015290519190921691639be2faed916044808301926020929190829003018186803b158015610e5a57600080fd5b505afa158015610e6e573d6000803e3d6000fd5b505050506040513d6020811015610e8457600080fd5b5051610a9b57506000610a9f565b610e9a610a65565b610ee6576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610eef33610fde565b610f34576040805162461bcd60e51b81526020600482015260116024820152703737ba1024b232b73a34ba3ca0b236b4b760791b604482015290519081900360640190fd5b60055460ff1615610f4457600080fd5b610f5560068263ffffffff6114f516565b6040516001600160a01b038216907f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde890600090a250565b6001600160a01b031660009081526010602052604090205460ff1690565b60055460ff1615610fba57600080fd5b61089d33611254565b6001600160a01b03166000908152600c602052604090205490565b6000610ba160018363ffffffff61143016565b610ff9610d91565b61100257600080fd5b6108a88161153d565b6000611015610d91565b61101e57600080fd5b610a9b82611060565b6000610ba160068363ffffffff61143016565b611042610d91565b61104b57600080fd5b60055460ff161561105b57600080fd5b600b55565b61107160018263ffffffff6114f516565b6040516001600160a01b038216907f869f6a5b4767d57c58d57f1ddf82e1516487f35944a19bf30a4a21bd35f6ad0590600090a250565b6110b960078263ffffffff61113a16565b6009805460010190556001600160a01b0381166000908152600d602090815260408083204290819055600c909252909120556110f4816115ab565b1561110357600a805460010190555b6040516001600160a01b038216907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a250565b6001600160a01b03811661114d57600080fd5b6111578282611430565b1561116157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b80516020808301919091206000818152600f9092526040909120546001600160a01b0316156111f5576040805162461bcd60e51b815260206004820152601660248201527511125108185b1c9958591e481c9959da5cdd195c995960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600e60209081526040909120835161121e928501906115b1565b506000818152600f6020526040902080546001600160a01b0319166001600160a01b03851617905561124f836110a8565b505050565b61126560078263ffffffff6114f516565b600980546000190190556001600160a01b0381166000908152600c6020526040812055611291816115ab565b156112a157600a80546000190190555b6001600160a01b0381166000908152600e602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156113405780601f1061131557610100808354040283529160200191611340565b820191906000526020600020905b81548152906001019060200180831161132357829003601f168201915b505083516020808601919091206001600160a01b0388166000908152600c83526040808220829055600e9093529182209596509461138294509250905061162f565b6000818152600f602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a2505050565b6113e460018263ffffffff61113a16565b6040516001600160a01b038216907f3505858ac30c166c603cb64de4a970615e36a4ed8fea37ba93bc5f11a38dd30990600090a250565b60008282111561142a57600080fd5b50900390565b60006001600160a01b03821661144557600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61147660048263ffffffff6114f516565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6114be60048263ffffffff61113a16565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001600160a01b03811661150857600080fd5b6115128282611430565b61151b57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03811661155057600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106115f257805160ff191683800117855561161f565b8280016001018555821561161f579182015b8281111561161f578251825591602001919060010190611604565b5061162b92915061166f565b5090565b50805460018160011615610100020316600290046000825580601f1061165557506108a8565b601f0160209004906000526020600020908101906108a891905b610a7391905b8082111561162b576000815560010161167556fea265627a7a7231582088b13fb239f6582540d988654452d474e2b2480531aa7d99362fbc9929efb4c164736f6c63430005100032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061023d5760003560e01c806369dc9ff31161013b578063c3c5a547116100b8578063e5ecaf591161007c578063e5ecaf5914610708578063f2fde38b1461072e578063f7d7f9cc14610754578063fe575a871461077a578063fff930d4146107a05761023d565b8063c3c5a54714610668578063c6a276c21461068e578063c73cc4ae146106b4578063d6cd9473146106da578063e1e360ba146106e25761023d565b80638da5cb5b116100ff5780638da5cb5b146106225780638f32d59b1461062a578063b2a1de2214610632578063b30f7e7f1461063a578063c375c2ef146106425761023d565b806369dc9ff3146105be5780636ef8d66d146105e4578063715018a6146105ec57806382dc1ec4146105f45780638456cb591461061a5761023d565b80632bc298ac116101c957806346fbf68e1161018d57806346fbf68e1461049657806354f9f7a3146104bc5780635c975abb146105575780635f539d691461055f57806367c75937146105855761023d565b80632bc298ac146104025780632ef1afc91461043a57806331b376e2146104605780633af32abf146104685780633f4ba83a1461048e5761023d565b8063188efc1611610210578063188efc16146102be5780631b027099146102e4578063223668441461039a578063291d9549146103b65780632b32e46c146103dc5761023d565b8063086cfca81461024257806308e0d29d1461026a5780630f10a8b81461029057806310154bad14610298575b600080fd5b6102686004803603602081101561025857600080fd5b50356001600160a01b03166107bd565b005b6102686004803603602081101561028057600080fd5b50356001600160a01b0316610878565b610268610894565b610268600480360360208110156102ae57600080fd5b50356001600160a01b031661089f565b610268600480360360208110156102d457600080fd5b50356001600160a01b03166108ab565b610268600480360360408110156102fa57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561032557600080fd5b82018360208201111561033757600080fd5b8035906020019184600183028401116401000000008311171561035957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a5945050505050565b6103a2610a65565b604080519115158252519081900360200190f35b610268600480360360208110156103cc57600080fd5b50356001600160a01b0316610a76565b6103a2600480360360208110156103f257600080fd5b50356001600160a01b0316610a7f565b6104286004803603602081101561041857600080fd5b50356001600160a01b0316610aa4565b60408051918252519081900360200190f35b6104286004803603602081101561045057600080fd5b50356001600160a01b0316610ab6565b610428610ac8565b6103a26004803603602081101561047e57600080fd5b50356001600160a01b0316610ace565b610268610b2e565b6103a2600480360360208110156104ac57600080fd5b50356001600160a01b0316610b8e565b6104e2600480360360208110156104d257600080fd5b50356001600160a01b0316610ba7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561051c578181015183820152602001610504565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a2610c42565b6102686004803603602081101561057557600080fd5b50356001600160a01b0316610c4b565b6105a26004803603602081101561059b57600080fd5b5035610c6f565b604080516001600160a01b039092168252519081900360200190f35b6103a2600480360360208110156105d457600080fd5b50356001600160a01b0316610c8a565b610268610c9f565b610268610ca8565b6102686004803603602081101561060a57600080fd5b50356001600160a01b0316610d03565b610268610d1e565b6105a2610d82565b6103a2610d91565b610428610da2565b610428610da8565b6102686004803603602081101561065857600080fd5b50356001600160a01b03166108a8565b6103a26004803603602081101561067e57600080fd5b50356001600160a01b0316610dae565b610268600480360360208110156106a457600080fd5b50356001600160a01b0316610e92565b6103a2600480360360208110156106ca57600080fd5b50356001600160a01b0316610f8c565b610268610faa565b610428600480360360208110156106f857600080fd5b50356001600160a01b0316610fc3565b6103a26004803603602081101561071e57600080fd5b50356001600160a01b0316610fde565b6102686004803603602081101561074457600080fd5b50356001600160a01b0316610ff1565b6103a26004803603602081101561076a57600080fd5b50356001600160a01b031661100b565b6103a26004803603602081101561079057600080fd5b50356001600160a01b0316611027565b610268600480360360208110156107b657600080fd5b503561103a565b6107c5610d91565b6107ce57600080fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051638da5cb5b60e01b815290519290911691638da5cb5b91600480820192602092909190829003018186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b505050506040513d602081101561085457600080fd5b5051600380546001600160a01b0319166001600160a01b0390921691909117905550565b6001600160a01b03166000908152600c60205260409020429055565b61089d33611060565b565b6108a8816110a8565b50565b6108b3610a65565b6108ff576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b61090833610fde565b61094d576040805162461bcd60e51b81526020600482015260116024820152703737ba1024b232b73a34ba3ca0b236b4b760791b604482015290519081900360640190fd5b60055460ff161561095d57600080fd5b61096e60068263ffffffff61113a16565b6040516001600160a01b038216907f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b87896790600090a250565b6109ad610a65565b6109f9576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610a0233610fde565b610a47576040805162461bcd60e51b81526020600482015260116024820152703737ba1024b232b73a34ba3ca0b236b4b760791b604482015290519081900360640190fd5b60055460ff1615610a5757600080fd5b610a618282611186565b5050565b6000610a7030610dae565b90505b90565b6108a881611254565b6000610a89610d91565b610a9257600080fd5b610a9b826113d3565b5060015b919050565b600d6020526000908152604090205481565b600c6020526000908152604090205481565b600b5481565b6001600160a01b0381166000908152600c602052604081205481906201518090610aff90429063ffffffff61141b16565b81610b0657fe5b049050600b548111158015610b275750610b2760078463ffffffff61143016565b9392505050565b610b3733610b8e565b610b4057600080fd5b60055460ff16610b4f57600080fd5b6005805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6000610ba160048363ffffffff61143016565b92915050565b600e6020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610c3a5780601f10610c0f57610100808354040283529160200191610c3a565b820191906000526020600020905b815481529060010190602001808311610c1d57829003601f168201915b505050505081565b60055460ff1690565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b600f602052600090815260409020546001600160a01b031681565b60106020526000908152604090205460ff1681565b61089d33611465565b610cb0610d91565b610cb957600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610d0c33610b8e565b610d1557600080fd5b6108a8816114ad565b610d2733610b8e565b610d3057600080fd5b60055460ff1615610d4057600080fd5b6005805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60095481565b600a5481565b6002546000906001600160a01b0316610e02576040805162461bcd60e51b8152602060048201526011602482015270105d985d185c881a5cc81b9bdd081cd95d607a1b604482015290519081900360640190fd5b60035460025460408051639be2faed60e01b81526001600160a01b038681166004830152928316602482015290519190921691639be2faed916044808301926020929190829003018186803b158015610e5a57600080fd5b505afa158015610e6e573d6000803e3d6000fd5b505050506040513d6020811015610e8457600080fd5b5051610a9b57506000610a9f565b610e9a610a65565b610ee6576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610eef33610fde565b610f34576040805162461bcd60e51b81526020600482015260116024820152703737ba1024b232b73a34ba3ca0b236b4b760791b604482015290519081900360640190fd5b60055460ff1615610f4457600080fd5b610f5560068263ffffffff6114f516565b6040516001600160a01b038216907f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde890600090a250565b6001600160a01b031660009081526010602052604090205460ff1690565b60055460ff1615610fba57600080fd5b61089d33611254565b6001600160a01b03166000908152600c602052604090205490565b6000610ba160018363ffffffff61143016565b610ff9610d91565b61100257600080fd5b6108a88161153d565b6000611015610d91565b61101e57600080fd5b610a9b82611060565b6000610ba160068363ffffffff61143016565b611042610d91565b61104b57600080fd5b60055460ff161561105b57600080fd5b600b55565b61107160018263ffffffff6114f516565b6040516001600160a01b038216907f869f6a5b4767d57c58d57f1ddf82e1516487f35944a19bf30a4a21bd35f6ad0590600090a250565b6110b960078263ffffffff61113a16565b6009805460010190556001600160a01b0381166000908152600d602090815260408083204290819055600c909252909120556110f4816115ab565b1561110357600a805460010190555b6040516001600160a01b038216907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a250565b6001600160a01b03811661114d57600080fd5b6111578282611430565b1561116157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b80516020808301919091206000818152600f9092526040909120546001600160a01b0316156111f5576040805162461bcd60e51b815260206004820152601660248201527511125108185b1c9958591e481c9959da5cdd195c995960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600e60209081526040909120835161121e928501906115b1565b506000818152600f6020526040902080546001600160a01b0319166001600160a01b03851617905561124f836110a8565b505050565b61126560078263ffffffff6114f516565b600980546000190190556001600160a01b0381166000908152600c6020526040812055611291816115ab565b156112a157600a80546000190190555b6001600160a01b0381166000908152600e602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156113405780601f1061131557610100808354040283529160200191611340565b820191906000526020600020905b81548152906001019060200180831161132357829003601f168201915b505083516020808601919091206001600160a01b0388166000908152600c83526040808220829055600e9093529182209596509461138294509250905061162f565b6000818152600f602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a2505050565b6113e460018263ffffffff61113a16565b6040516001600160a01b038216907f3505858ac30c166c603cb64de4a970615e36a4ed8fea37ba93bc5f11a38dd30990600090a250565b60008282111561142a57600080fd5b50900390565b60006001600160a01b03821661144557600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61147660048263ffffffff6114f516565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6114be60048263ffffffff61113a16565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001600160a01b03811661150857600080fd5b6115128282611430565b61151b57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03811661155057600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106115f257805160ff191683800117855561161f565b8280016001018555821561161f579182015b8281111561161f578251825591602001919060010190611604565b5061162b92915061166f565b5090565b50805460018160011615610100020316600290046000825580601f1061165557506108a8565b601f0160209004906000526020600020908101906108a891905b610a7391905b8082111561162b576000815560010161167556fea265627a7a7231582088b13fb239f6582540d988654452d474e2b2480531aa7d99362fbc9929efb4c164736f6c63430005100032",
  "sourceMap": "187:685:44:-;;;443:64:7;;;-1:-1:-1;;;;;;443:64:7;;;505:1;692:35:9;;;;733:39;;816:2;778:40;;227:34:44;5:2:-1;;;;30:1;27;20:12;5:2;-1:-1;1398:1:9;515:19:77;;-1:-1:-1;;;;;;515:19:77;524:10;515:19;;;;549:40;;-1:-1:-1;;;;;582:6:77;;;;;1398:1:9;;549:40:77;;1398:1:9;;549:40:77;548:29:10;566:10;-1:-1:-1;;;;;548:17:10;:29;:::i;:::-;688:6:7;:16;;-1:-1:-1;;;;;;688:16:7;-1:-1:-1;;;;;688:16:7;;;;;;;;;;;719:6;:19;715:98;;787:6;;;;;;;;;-1:-1:-1;;;;;787:6:7;-1:-1:-1;;;;;787:12:7;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;787:14:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;787:14:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;787:14:7;754:10;:48;;-1:-1:-1;;;;;;754:48:7;-1:-1:-1;;;;;754:48:7;;;;;;;;;715:98;-1:-1:-1;275:22:72;286:10;-1:-1:-1;;;;;275:10:72;:22;:::i;:::-;352:7:74;:15;;-1:-1:-1;;352:15:74;;;187:685:44;;1970:142:10;2034:27;2053:7;2034:14;:18;;;;;;:27;;;;:::i;:::-;2077;;-1:-1:-1;;;;;2077:27:10;;;;;;;;1970:142;:::o;685:119:72:-;741:21;754:7;741:8;:12;;;;;;:21;;;;:::i;:::-;777:20;;-1:-1:-1;;;;;777:20:72;;;;;;;;685:119;:::o;259:181:70:-;-1:-1:-1;;;;;335:21:70;;327:30;;;;;;376:18;380:4;386:7;-1:-1:-1;;;;;376:3:70;:18;:::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:70;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:70;429:4;406:27;;;259:181::o;786:162::-;858:4;-1:-1:-1;;;;;882:21:70;;874:30;;;;;;-1:-1:-1;;;;;;921:20:70;:11;:20;;;;;;;;;;;;;;;786:162::o;187:685:44:-;;;;;;;",
  "deployedSourceMap": "187:685:44:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;187:685:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1698:143:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1698:143:7;-1:-1:-1;;;;;1698:143:7;;:::i;:::-;;775:95:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;775:95:44;-1:-1:-1;;;;;775:95:44;;:::i;1796:91:10:-;;;:::i;315:89:44:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;315:89:44;-1:-1:-1;;;;;315:89:44;;:::i;5366:208:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5366:208:9;-1:-1:-1;;;;;5366:208:9;;:::i;2591:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2591:210:9;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2591:210:9;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2591:210:9;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2591:210:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2591:210:9;;-1:-1:-1;2591:210:9;;-1:-1:-1;;;;;2591:210:9:i;1987:102:7:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;410:95:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;410:95:44;-1:-1:-1;;;;;410:95:44;;:::i;1248:142:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1248:142:10;-1:-1:-1;;;;;1248:142:10;;:::i;883:44:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;883:44:9;-1:-1:-1;;;;;883:44:9;;:::i;:::-;;;;;;;;;;;;;;;;825:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;825:52:9;-1:-1:-1;;;;;825:52:9;;:::i;778:40::-;;;:::i;3520:268::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3520:268:9;-1:-1:-1;;;;;3520:268:9;;:::i;1176:115:74:-;;;:::i;395:107:72:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;395:107:72;-1:-1:-1;;;;;395:107:72;;:::i;934:43:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;934:43:9;-1:-1:-1;;;;;934:43:9;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;934:43:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:76:74;;;:::i;567:87:44:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;567:87:44;-1:-1:-1;;;;;567:87:44;;:::i;983:51:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;983:51:9;;:::i;:::-;;;;-1:-1:-1;;;;;983:51:9;;;;;;;;;;;;;;267:41:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;267:41:44;-1:-1:-1;;;;;267:41:44;;:::i;604:75:72:-;;;:::i;1347:137:77:-;;;:::i;508:90:72:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;508:90:72;-1:-1:-1;;;;;508:90:72;;:::i;973:113:74:-;;;:::i;659:77:77:-;;;:::i;979:90::-;;;:::i;692:35:9:-;;;:::i;733:39::-;;;:::i;511:50:44:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;511:50:44;-1:-1:-1;;;;;511:50:44;;:::i;2235:262:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2235:262:7;-1:-1:-1;;;;;2235:262:7;;:::i;5743:216:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5743:216:9;-1:-1:-1;;;;;5743:216:9;;:::i;660:109:44:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;660:109:44;-1:-1:-1;;;;;660:109:44;;:::i;3217:99:9:-;;;:::i;3957:124::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3957:124:9;-1:-1:-1;;;;;3957:124:9;;:::i;951:122:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;951:122:10;-1:-1:-1;;;;;951:122:10;;:::i;1655:107:77:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1655:107:77;-1:-1:-1;;;;;1655:107:77;;:::i;1570:148:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1570:148:10;-1:-1:-1;;;;;1570:148:10;;:::i;8809:113:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8809:113:9;-1:-1:-1;;;;;8809:113:9;;:::i;1583:126::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1583:126:9;;:::i;1698:143:7:-;863:9:77;:7;:9::i;:::-;855:18;;;;;;1760:6:7;:16;;-1:-1:-1;;;;;;1760:16:7;-1:-1:-1;;;;;1760:16:7;;;;;;;;;;;1819:14;;;-1:-1:-1;;;1819:14:7;;;;:6;;;;;:12;;:14;;;;;;;;;;;;;;;:6;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;1819:14:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1819:14:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1819:14:7;1786:10;:48;;-1:-1:-1;;;;;;1786:48:7;-1:-1:-1;;;;;1786:48:7;;;;;;;;;-1:-1:-1;1698:143:7:o;775:95:44:-;-1:-1:-1;;;;;831:26:44;;;;;:17;:26;;;;;860:3;831:32;;775:95::o;1796:91:10:-;1847:32;1868:10;1847:20;:32::i;:::-;1796:91::o;315:89:44:-;373:24;389:7;373:15;:24::i;:::-;315:89;:::o;5366:208:9:-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;;;;703:27:10;719:10;703:15;:27::i;:::-;695:57;;;;;-1:-1:-1;;;695:57:10;;;;;;;;;;;;-1:-1:-1;;;695:57:10;;;;;;;;;;;;;;;689:7:74;;;;688:8;680:17;;;;;;5507:22:9;:9;5521:7;5507:22;:13;:22;:::i;:::-;5544:23;;-1:-1:-1;;;;;5544:23:9;;;;;;;;5366:208;:::o;2591:210::-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;;;;703:27:10;719:10;703:15;:27::i;:::-;695:57;;;;;-1:-1:-1;;;695:57:10;;;;;;;;;;;;-1:-1:-1;;;695:57:10;;;;;;;;;;;;;;;689:7:74;;;;688:8;680:17;;;;;;2758:36:9;2781:7;2790:3;2758:22;:36::i;:::-;2591:210;;:::o;1987:102:7:-;2032:4;2055:27;2076:4;2055:12;:27::i;:::-;2048:34;;1987:102;;:::o;410:95:44:-;471:27;490:7;471:18;:27::i;1248:142:10:-;1317:4;863:9:77;:7;:9::i;:::-;855:18;;;;;;1334:26:10;1352:7;1334:17;:26::i;:::-;-1:-1:-1;1378:4:10;883:1:77;1248:142:10;;;:::o;883:44:9:-;;;;;;;;;;;;;:::o;825:52::-;;;;;;;;;;;;;:::o;778:40::-;;;;:::o;3520:268::-;-1:-1:-1;;;;;3640:26:9;;3581:4;3640:26;;;:17;:26;;;;;;3581:4;;3671:6;;3632:35;;:3;;:35;:7;:35;:::i;:::-;3631:46;;;;;;3597:80;;3734:20;;3707:23;:47;;3706:75;;;;-1:-1:-1;3759:22:9;:9;3773:7;3759:22;:13;:22;:::i;:::-;3687:94;3520:268;-1:-1:-1;;;3520:268:9:o;1176:115:74:-;350:20:72;359:10;350:8;:20::i;:::-;342:29;;;;;;860:7:74;;;;852:16;;;;;;1234:7;:15;;-1:-1:-1;;1234:15:74;;;1264:20;;;1273:10;1264:20;;;;;;;;;;;;;1176:115::o;395:107:72:-;451:4;474:21;:8;487:7;474:21;:12;:21;:::i;:::-;467:28;395:107;-1:-1:-1;;395:107:72:o;934:43:9:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;934:43:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;460:76:74:-;522:7;;;;460:76;:::o;567:87:44:-;-1:-1:-1;;;;;622:18:44;;;;;:9;:18;;;;;:25;;-1:-1:-1;;622:25:44;643:4;622:25;;;567:87::o;983:51:9:-;;;;;;;;;;;;-1:-1:-1;;;;;983:51:9;;:::o;267:41:44:-;;;;;;;;;;;;;;;:::o;604:75:72:-;647:25;661:10;647:13;:25::i;1347:137:77:-;863:9;:7;:9::i;:::-;855:18;;;;;;1445:1;1429:6;;1408:40;;-1:-1:-1;;;;;1429:6:77;;;;1408:40;;1445:1;;1408:40;1475:1;1458:19;;-1:-1:-1;;;;;;1458:19:77;;;1347:137::o;508:90:72:-;350:20;359:10;350:8;:20::i;:::-;342:29;;;;;;572:19;583:7;572:10;:19::i;973:113:74:-;350:20:72;359:10;350:8;:20::i;:::-;342:29;;;;;;689:7:74;;;;688:8;680:17;;;;;;1032:7;:14;;-1:-1:-1;;1032:14:74;1042:4;1032:14;;;1061:18;;;1068:10;1061:18;;;;;;;;;;;;;973:113::o;659:77:77:-;697:7;723:6;-1:-1:-1;;;;;723:6:77;659:77;:::o;979:90::-;1019:4;1056:6;-1:-1:-1;;;;;1056:6:77;1042:10;:20;;979:90::o;692:35:9:-;;;;:::o;733:39::-;;;;:::o;2235:262:7:-;2318:6;;2294:4;;-1:-1:-1;;;;;2318:6:7;2310:49;;;;;-1:-1:-1;;;2310:49:7;;;;;;;;;;;;-1:-1:-1;;;2310:49:7;;;;;;;;;;;;;;;2376:10;;2422:6;;2376:54;;;-1:-1:-1;;;2376:54:7;;-1:-1:-1;;;;;2376:54:7;;;;;;;2422:6;;;2376:54;;;;;;:10;;;;;:29;;:54;;;;;;;;;;;;;;:10;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;2376:54:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2376:54:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2376:54:7;2370:100;;-1:-1:-1;2454:5:7;2447:12;;5743:216:9;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;;;;703:27:10;719:10;703:15;:27::i;:::-;695:57;;;;;-1:-1:-1;;;695:57:10;;;;;;;;;;;;-1:-1:-1;;;695:57:10;;;;;;;;;;;;;;;689:7:74;;;;688:8;680:17;;;;;;5887:25:9;:9;5904:7;5887:25;:16;:25;:::i;:::-;5927;;-1:-1:-1;;;;;5927:25:9;;;;;;;;5743:216;:::o;660:109:44:-;-1:-1:-1;;;;;744:18:44;721:4;744:18;;;:9;:18;;;;;;;;;660:109::o;3217:99:9:-;689:7:74;;;;688:8;680:17;;;;;;3279:30:9;3298:10;3279:18;:30::i;3957:124::-;-1:-1:-1;;;;;4048:26:9;4022:7;4048:26;;;:17;:26;;;;;;;3957:124::o;951:122:10:-;1014:4;1038:27;:14;1057:7;1038:27;:18;:27;:::i;1655:107:77:-;863:9;:7;:9::i;:::-;855:18;;;;;;1727:28;1746:8;1727:18;:28::i;1570:148:10:-;1642:4;863:9:77;:7;:9::i;:::-;855:18;;;;;;1659:29:10;1680:7;1659:20;:29::i;8809:113:9:-;8870:4;8893:22;:9;8907:7;8893:22;:13;:22;:::i;1583:126::-;863:9:77;:7;:9::i;:::-;855:18;;;;;;689:7:74;;;;688:8;680:17;;;;;;1673:20:9;:29;1583:126::o;2198:150:10:-;2265:30;:14;2287:7;2265:30;:21;:30;:::i;:::-;2311:29;;-1:-1:-1;;;;;2311:29:10;;;;;;;;2198:150;:::o;7162:324:9:-;7223:22;:9;7237:7;7223:22;:13;:22;:::i;:::-;7256:16;:21;;7276:1;7256:21;;;-1:-1:-1;;;;;7287:18:9;;7256:16;7287:18;;;:9;:18;;;;;;;;7308:3;7287:24;;;;7321:17;:26;;;;;;:32;7368:19;7297:7;7368:10;:19::i;:::-;7364:75;;;7403:20;:25;;7427:1;7403:25;;;7364:75;7454:25;;-1:-1:-1;;;;;7454:25:9;;;;;;;;7162:324;:::o;259:181:70:-;-1:-1:-1;;;;;335:21:70;;327:30;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:70;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:70;429:4;406:27;;;259:181::o;7645:326:9:-;7748:21;;;;;;;;;;7732:13;7787:23;;;:16;:23;;;;;;;;-1:-1:-1;;;;;7787:23:9;:37;7779:72;;;;;-1:-1:-1;;;7779:72:9;;;;;;;;;;;;-1:-1:-1;;;7779:72:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;7862:18:9;;;;;;:9;:18;;;;;;;;:24;;;;;;;;:::i;:::-;-1:-1:-1;7896:23:9;;;;:16;:23;;;;;:33;;-1:-1:-1;;;;;;7896:33:9;-1:-1:-1;;;;;7896:33:9;;;;;7940:24;7896:33;7940:15;:24::i;:::-;7645:326;;;:::o;8083:514::-;8147:25;:9;8164:7;8147:25;:16;:25;:::i;:::-;8183:16;:21;;-1:-1:-1;;8183:21:9;;;-1:-1:-1;;;;;8221:26:9;;8183:16;8221:26;;;:17;:26;;;;;8214:33;8262:19;8239:7;8262:10;:19::i;:::-;8258:75;;;8297:20;:25;;-1:-1:-1;;8297:25:9;;;8258:75;-1:-1:-1;;;;;8363:18:9;;;;;;:9;:18;;;;;;;;;8343:38;;;;;;-1:-1:-1;;8343:38:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;:38;;;8363:18;8343:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8407:21:9;;;;;;;;;;-1:-1:-1;;;;;8446:26:9;;8391:13;8446:26;;;:17;:26;;;;;;8439:33;;;8489:9;:18;;;;;;8343:38;;-1:-1:-1;8407:21:9;8482:25;;-1:-1:-1;8489:18:9;-1:-1:-1;8391:13:9;-1:-1:-1;8482:25:9;:::i;:::-;8524:23;;;;:16;:23;;;;;;8517:30;;-1:-1:-1;;;;;;8517:30:9;;;8563:27;-1:-1:-1;;;;;8563:27:9;;;;;;8083:514;;;:::o;1970:142:10:-;2034:27;:14;2053:7;2034:27;:18;:27;:::i;:::-;2077;;-1:-1:-1;;;;;2077:27:10;;;;;;;;1970:142;:::o;1205:145:76:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;-1:-1:-1;1319:5:76;;;1205:145::o;786:162:70:-;858:4;-1:-1:-1;;;;;882:21:70;;874:30;;;;;;-1:-1:-1;;;;;;921:20:70;:11;:20;;;;;;;;;;;;;;;786:162::o;810:127:72:-;869:24;:8;885:7;869:24;:15;:24;:::i;:::-;908:22;;-1:-1:-1;;;;;908:22:72;;;;;;;;810:127;:::o;685:119::-;741:21;:8;754:7;741:21;:12;:21;:::i;:::-;777:20;;-1:-1:-1;;;;;777:20:72;;;;;;;;685:119;:::o;514:184:70:-;-1:-1:-1;;;;;593:21:70;;585:30;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;-1:-1:-1;;;;;663:20:70;686:5;663:20;;;;;;;;;;;:28;;-1:-1:-1;;663:28:70;;;514:184::o;1906:183:77:-;-1:-1:-1;;;;;1979:22:77;;1971:31;;;;;;2038:6;;;2017:38;;-1:-1:-1;;;;;2017:38:77;;;;2038:6;;;2017:38;;;2065:6;:17;;-1:-1:-1;;;;;;2065:17:77;-1:-1:-1;;;;;2065:17:77;;;;;;;;;;1906:183::o;9040:192:9:-;9171:18;9215:10;;;9040:192::o;187:685:44:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;187:685:44;;;-1:-1:-1;187:685:44;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity >0.5.4;\n\nimport \"../../../contracts/identity/Identity.sol\";\n\n/**\n * @title A Identity mock. Ignores the scheme registration.\n * Those tests can be found on e2e tests.\n */\ncontract IdentityMock is Identity {\n    constructor() public Identity() {}\n\n    mapping(address => bool) public contracts;\n\n    function addWhitelisted(address account) public {\n        _addWhitelisted(account);\n    }\n\n    function removeWhitelisted(address account) public {\n        _removeWhitelisted(account);\n    }\n\n    function removeContract(address account) public {}\n\n    function addContract(address account) public {\n        contracts[account] = true;\n    }\n\n    function isDAOContract(address account) public view returns (bool) {\n        return contracts[account];\n    }\n\n    function authenticate(address account) public {\n        dateAuthenticated[account] = now;\n    }\n}\n",
  "sourcePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/IdentityMock.sol",
  "ast": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/IdentityMock.sol",
    "exportedSymbols": {
      "IdentityMock": [
        11818
      ]
    },
    "id": 11819,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11742,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:44"
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/Identity.sol",
        "file": "../../../contracts/identity/Identity.sol",
        "id": 11743,
        "nodeType": "ImportDirective",
        "scope": 11819,
        "sourceUnit": 2381,
        "src": "25:50:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11744,
              "name": "Identity",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2380,
              "src": "212:8:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Identity_$2380",
                "typeString": "contract Identity"
              }
            },
            "id": 11745,
            "nodeType": "InheritanceSpecifier",
            "src": "212:8:44"
          }
        ],
        "contractDependencies": [
          1423,
          2380,
          2507,
          20947,
          21111,
          21417
        ],
        "contractKind": "contract",
        "documentation": "@title A Identity mock. Ignores the scheme registration.\nThose tests can be found on e2e tests.",
        "fullyImplemented": true,
        "id": 11818,
        "linearizedBaseContracts": [
          11818,
          2380,
          21111,
          20947,
          1423,
          2507,
          21417
        ],
        "name": "IdentityMock",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 11750,
              "nodeType": "Block",
              "src": "259:2:44",
              "statements": []
            },
            "documentation": null,
            "id": 11751,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 11748,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11747,
                  "name": "Identity",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2380,
                  "src": "248:8:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Identity_$2380_$",
                    "typeString": "type(contract Identity)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "248:10:44"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11746,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "238:2:44"
            },
            "returnParameters": {
              "id": 11749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "259:0:44"
            },
            "scope": 11818,
            "src": "227:34:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11755,
            "name": "contracts",
            "nodeType": "VariableDeclaration",
            "scope": 11818,
            "src": "267:41:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 11754,
              "keyType": {
                "id": 11752,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "275:7:44",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "267:24:44",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 11753,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "286:4:44",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11764,
              "nodeType": "Block",
              "src": "363:41:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11761,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11757,
                        "src": "389:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11760,
                      "name": "_addWhitelisted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2244,
                      "src": "373:15:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 11762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "373:24:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11763,
                  "nodeType": "ExpressionStatement",
                  "src": "373:24:44"
                }
              ]
            },
            "documentation": null,
            "id": 11765,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addWhitelisted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11757,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11765,
                  "src": "339:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11756,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "339:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "338:17:44"
            },
            "returnParameters": {
              "id": 11759,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "363:0:44"
            },
            "scope": 11818,
            "src": "315:89:44",
            "stateMutability": "nonpayable",
            "superFunction": 1999,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11774,
              "nodeType": "Block",
              "src": "461:44:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11771,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11767,
                        "src": "490:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11770,
                      "name": "_removeWhitelisted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2350,
                      "src": "471:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 11772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "471:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11773,
                  "nodeType": "ExpressionStatement",
                  "src": "471:27:44"
                }
              ]
            },
            "documentation": null,
            "id": 11775,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeWhitelisted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11767,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11775,
                  "src": "437:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11766,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "437:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "436:17:44"
            },
            "returnParameters": {
              "id": 11769,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "461:0:44"
            },
            "scope": 11818,
            "src": "410:95:44",
            "stateMutability": "nonpayable",
            "superFunction": 2034,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11780,
              "nodeType": "Block",
              "src": "559:2:44",
              "statements": []
            },
            "documentation": null,
            "id": 11781,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeContract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11777,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11781,
                  "src": "535:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "535:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "534:17:44"
            },
            "returnParameters": {
              "id": 11779,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "559:0:44"
            },
            "scope": 11818,
            "src": "511:50:44",
            "stateMutability": "nonpayable",
            "superFunction": 2190,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11792,
              "nodeType": "Block",
              "src": "612:42:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11786,
                        "name": "contracts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11755,
                        "src": "622:9:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 11788,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11787,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11783,
                        "src": "632:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "622:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 11789,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "643:4:44",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "622:25:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11791,
                  "nodeType": "ExpressionStatement",
                  "src": "622:25:44"
                }
              ]
            },
            "documentation": null,
            "id": 11793,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addContract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11784,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11783,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11793,
                  "src": "588:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11782,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "588:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "587:17:44"
            },
            "returnParameters": {
              "id": 11785,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "612:0:44"
            },
            "scope": 11818,
            "src": "567:87:44",
            "stateMutability": "nonpayable",
            "superFunction": 2164,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11804,
              "nodeType": "Block",
              "src": "727:42:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11800,
                      "name": "contracts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11755,
                      "src": "744:9:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 11802,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11801,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11795,
                      "src": "754:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "744:18:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11799,
                  "id": 11803,
                  "nodeType": "Return",
                  "src": "737:25:44"
                }
              ]
            },
            "documentation": null,
            "id": 11805,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isDAOContract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11795,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11805,
                  "src": "683:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11794,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "683:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "682:17:44"
            },
            "returnParameters": {
              "id": 11799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11798,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11805,
                  "src": "721:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11797,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "721:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "720:6:44"
            },
            "scope": 11818,
            "src": "660:109:44",
            "stateMutability": "view",
            "superFunction": 2203,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11816,
              "nodeType": "Block",
              "src": "821:49:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11810,
                        "name": "dateAuthenticated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "831:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 11812,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11811,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11807,
                        "src": "849:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "831:26:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11813,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22173,
                      "src": "860:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "831:32:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11815,
                  "nodeType": "ExpressionStatement",
                  "src": "831:32:44"
                }
              ]
            },
            "documentation": null,
            "id": 11817,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "authenticate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11807,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11817,
                  "src": "797:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11806,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "797:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "796:17:44"
            },
            "returnParameters": {
              "id": 11809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "821:0:44"
            },
            "scope": 11818,
            "src": "775:95:44",
            "stateMutability": "nonpayable",
            "superFunction": 1983,
            "visibility": "public"
          }
        ],
        "scope": 11819,
        "src": "187:685:44"
      }
    ],
    "src": "0:873:44"
  },
  "legacyAST": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/IdentityMock.sol",
    "exportedSymbols": {
      "IdentityMock": [
        11818
      ]
    },
    "id": 11819,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11742,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:44"
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/Identity.sol",
        "file": "../../../contracts/identity/Identity.sol",
        "id": 11743,
        "nodeType": "ImportDirective",
        "scope": 11819,
        "sourceUnit": 2381,
        "src": "25:50:44",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11744,
              "name": "Identity",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2380,
              "src": "212:8:44",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Identity_$2380",
                "typeString": "contract Identity"
              }
            },
            "id": 11745,
            "nodeType": "InheritanceSpecifier",
            "src": "212:8:44"
          }
        ],
        "contractDependencies": [
          1423,
          2380,
          2507,
          20947,
          21111,
          21417
        ],
        "contractKind": "contract",
        "documentation": "@title A Identity mock. Ignores the scheme registration.\nThose tests can be found on e2e tests.",
        "fullyImplemented": true,
        "id": 11818,
        "linearizedBaseContracts": [
          11818,
          2380,
          21111,
          20947,
          1423,
          2507,
          21417
        ],
        "name": "IdentityMock",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 11750,
              "nodeType": "Block",
              "src": "259:2:44",
              "statements": []
            },
            "documentation": null,
            "id": 11751,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 11748,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11747,
                  "name": "Identity",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2380,
                  "src": "248:8:44",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Identity_$2380_$",
                    "typeString": "type(contract Identity)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "248:10:44"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11746,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "238:2:44"
            },
            "returnParameters": {
              "id": 11749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "259:0:44"
            },
            "scope": 11818,
            "src": "227:34:44",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11755,
            "name": "contracts",
            "nodeType": "VariableDeclaration",
            "scope": 11818,
            "src": "267:41:44",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 11754,
              "keyType": {
                "id": 11752,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "275:7:44",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "267:24:44",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 11753,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "286:4:44",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11764,
              "nodeType": "Block",
              "src": "363:41:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11761,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11757,
                        "src": "389:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11760,
                      "name": "_addWhitelisted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2244,
                      "src": "373:15:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 11762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "373:24:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11763,
                  "nodeType": "ExpressionStatement",
                  "src": "373:24:44"
                }
              ]
            },
            "documentation": null,
            "id": 11765,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addWhitelisted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11757,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11765,
                  "src": "339:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11756,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "339:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "338:17:44"
            },
            "returnParameters": {
              "id": 11759,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "363:0:44"
            },
            "scope": 11818,
            "src": "315:89:44",
            "stateMutability": "nonpayable",
            "superFunction": 1999,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11774,
              "nodeType": "Block",
              "src": "461:44:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11771,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11767,
                        "src": "490:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11770,
                      "name": "_removeWhitelisted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2350,
                      "src": "471:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 11772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "471:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11773,
                  "nodeType": "ExpressionStatement",
                  "src": "471:27:44"
                }
              ]
            },
            "documentation": null,
            "id": 11775,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeWhitelisted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11767,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11775,
                  "src": "437:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11766,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "437:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "436:17:44"
            },
            "returnParameters": {
              "id": 11769,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "461:0:44"
            },
            "scope": 11818,
            "src": "410:95:44",
            "stateMutability": "nonpayable",
            "superFunction": 2034,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11780,
              "nodeType": "Block",
              "src": "559:2:44",
              "statements": []
            },
            "documentation": null,
            "id": 11781,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeContract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11777,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11781,
                  "src": "535:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "535:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "534:17:44"
            },
            "returnParameters": {
              "id": 11779,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "559:0:44"
            },
            "scope": 11818,
            "src": "511:50:44",
            "stateMutability": "nonpayable",
            "superFunction": 2190,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11792,
              "nodeType": "Block",
              "src": "612:42:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11786,
                        "name": "contracts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11755,
                        "src": "622:9:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 11788,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11787,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11783,
                        "src": "632:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "622:18:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 11789,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "643:4:44",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "622:25:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11791,
                  "nodeType": "ExpressionStatement",
                  "src": "622:25:44"
                }
              ]
            },
            "documentation": null,
            "id": 11793,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addContract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11784,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11783,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11793,
                  "src": "588:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11782,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "588:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "587:17:44"
            },
            "returnParameters": {
              "id": 11785,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "612:0:44"
            },
            "scope": 11818,
            "src": "567:87:44",
            "stateMutability": "nonpayable",
            "superFunction": 2164,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11804,
              "nodeType": "Block",
              "src": "727:42:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11800,
                      "name": "contracts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11755,
                      "src": "744:9:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 11802,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11801,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11795,
                      "src": "754:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "744:18:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11799,
                  "id": 11803,
                  "nodeType": "Return",
                  "src": "737:25:44"
                }
              ]
            },
            "documentation": null,
            "id": 11805,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isDAOContract",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11795,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11805,
                  "src": "683:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11794,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "683:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "682:17:44"
            },
            "returnParameters": {
              "id": 11799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11798,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11805,
                  "src": "721:4:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11797,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "721:4:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "720:6:44"
            },
            "scope": 11818,
            "src": "660:109:44",
            "stateMutability": "view",
            "superFunction": 2203,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11816,
              "nodeType": "Block",
              "src": "821:49:44",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11810,
                        "name": "dateAuthenticated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1906,
                        "src": "831:17:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 11812,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11811,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11807,
                        "src": "849:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "831:26:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11813,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22173,
                      "src": "860:3:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "831:32:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11815,
                  "nodeType": "ExpressionStatement",
                  "src": "831:32:44"
                }
              ]
            },
            "documentation": null,
            "id": 11817,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "authenticate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11807,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 11817,
                  "src": "797:15:44",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11806,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "797:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "796:17:44"
            },
            "returnParameters": {
              "id": 11809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "821:0:44"
            },
            "scope": 11818,
            "src": "775:95:44",
            "stateMutability": "nonpayable",
            "superFunction": 1983,
            "visibility": "public"
          }
        ],
        "scope": 11819,
        "src": "187:685:44"
      }
    ],
    "src": "0:873:44"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.2",
  "updatedAt": "2021-08-23T07:33:52.369Z",
  "devdoc": {
    "methods": {
      "addIdentityAdmin(address)": {
        "details": "Adds a identity admin account. Is only callable by owner.",
        "params": {
          "account": "Address to be added"
        },
        "return": "true if successful"
      },
      "isIdentityAdmin(address)": {
        "details": "Checks if account is identity admin",
        "params": {
          "account": "Account to check"
        },
        "return": "Boolean indicating if account is identity admin"
      },
      "isOwner()": {
        "return": "true if `msg.sender` is the owner of the contract."
      },
      "isRegistered()": {
        "details": "function to see if an avatar has been set and if this scheme is registered",
        "return": "true if scheme is registered"
      },
      "isRegistered(address)": {
        "details": "function to see if an avatar has been set and if this scheme is registered",
        "return": "true if scheme is registered"
      },
      "owner()": {
        "return": "the address of the owner."
      },
      "pause()": {
        "details": "called by the owner to pause, triggers stopped state"
      },
      "paused()": {
        "return": "true if the contract is paused, false otherwise."
      },
      "removeIdentityAdmin(address)": {
        "details": "Removes a identity admin account. Is only callable by owner.",
        "params": {
          "account": "Address to be removed"
        },
        "return": "true if successful"
      },
      "renounceIdentityAdmin()": {
        "details": "Allows an admin to renounce their role"
      },
      "renounceOwnership()": {
        "details": "Allows the current owner to relinquish control of the contract."
      },
      "setAvatar(address)": {
        "details": "Function to set a new avatar and controller for scheme can only be done by owner of scheme"
      },
      "transferOwnership(address)": {
        "details": "Allows the current owner to transfer control of the contract to a newOwner.",
        "params": {
          "newOwner": "The address to transfer ownership to."
        }
      },
      "unpause()": {
        "details": "called by the owner to unpause, returns to normal state"
      }
    },
    "title": "A Identity mock. Ignores the scheme registration. Those tests can be found on e2e tests."
  },
  "userdoc": {
    "methods": {
      "renounceOwnership()": {
        "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
      }
    }
  }
}