{
  "contractName": "ECDSAKeepStub",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "digest",
          "type": "bytes32"
        }
      ],
      "name": "SignatureRequested",
      "type": "event"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPublicKey",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkBondAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        }
      ],
      "name": "sign",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "distributeETHReward",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "distributeERC20Reward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "seizeSignerBonds",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "returnPartialSignerBonds",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "submitSignatureFraud",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "closeKeep",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "reset",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_publicKey",
          "type": "bytes"
        }
      ],
      "name": "setPublicKey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bool",
          "name": "_success",
          "type": "bool"
        }
      ],
      "name": "setSuccess",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_bondAmount",
          "type": "uint256"
        }
      ],
      "name": "setBondAmount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "burnContractBalance",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_depositAddress",
          "type": "address"
        }
      ],
      "name": "pushFundsFromKeep",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "drain",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"SignatureRequested\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[],\"name\":\"burnContractBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"checkBondAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"closeKeep\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"distributeERC20Reward\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"distributeETHReward\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"drain\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_depositAddress\",\"type\":\"address\"}],\"name\":\"pushFundsFromKeep\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"returnPartialSignerBonds\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"seizeSignerBonds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"}],\"name\":\"setBondAmount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"setPublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_success\",\"type\":\"bool\"}],\"name\":\"setSuccess\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"submitSignatureFraud\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is a stub used in tests, so we don't have to call actual ECDSAKeep\",\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"Implementation of ECDSAKeep interface used in tests only\"}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/keep/ECDSAKeepStub.sol\":\"ECDSAKeepStub\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITokenRecipient.sol\":{\"keccak256\":\"0x4ac6830ad44d0b0d70ebabc60150e9c915c7c0bd0129ef868d5d2cd8da0c32bd\",\"urls\":[\"bzz-raw://a5c6465285add41f07a951f90405800a8802e323ea11e9c7bdb5625ce109c7f7\",\"dweb:/ipfs/QmRf7B4WxsS7gbSwUotgQM633BQc2ye7rhYC1RNVFamBfp\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol\":{\"keccak256\":\"0x167b07029df8d350996d7f82d853437d1a2562401eeac98037c2eb4c5f295319\",\"urls\":[\"bzz-raw://7d2601ac8dcd5d59b3e479a61262de2162c96ed7ad1cd161331e2e4500b8346a\",\"dweb:/ipfs/QmWVjBSvHFg9W5zsSxgdpNSYKgfLa28fr3mPjjKQaDBxmk\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachineAuthority.sol\":{\"keccak256\":\"0x7ad8a2cee5e6bbc187d04b147dc0d2bc2ae12bb8c3680870be9013dd5543bfd6\",\"urls\":[\"bzz-raw://733f2370c788437b0034c40a8df07f4714009769ed8134a9c656e2a103996687\",\"dweb:/ipfs/Qma9LAGQDzyUvsbhLx3FUKRCx3FmnoZuMxG4SUdjLr8bRm\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/keep/ECDSAKeepStub.sol\":{\"keccak256\":\"0x2bbf30d308583eebd3d9665a0d0570dee9ea954e30dd6156b6c9eb2ef6d6eb21\",\"urls\":[\"bzz-raw://3d942d29758a9bb7e52a9411f60610b7218a6b4029368dc1ff38a2d69c552a63\",\"dweb:/ipfs/QmXJsKbt9HJ6nt3e6QncBwCwtEM8qZSLRLfdkidseHBTXR\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/test/system/TestTBTCToken.sol\":{\"keccak256\":\"0xee4e7a620b4195ad090207272b849baed256c070ad210977fd3af70664a5fd0f\",\"urls\":[\"bzz-raw://65560ed1e0f1f196b0c9fa22d882ad8aca55df6a1b8fd362056ac98d9efeafca\",\"dweb:/ipfs/QmZSY2juTKoeS72VEGPis4wqdBRthqyGAWhRLEsJz7AZEq\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\":{\"keccak256\":\"0x8f1edc0a2dfb4d167d190989ebc1c4256664e50ec1f82dfaeb25fa5d4a76a35a\",\"urls\":[\"bzz-raw://e815868907cc082fee1e3964be7de12da2161863d68dd1532a74e3a97bacf533\",\"dweb:/ipfs/Qmd8DqutKSwxh38WWA1ydftNkiAxSD9sqxa7qf1asHKA8c\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzz-raw://4f5b57664069671648fb81f55b0082faecdf1b2f159eec6b1fa6cef9b7d73bc5\",\"dweb:/ipfs/QmcyytaLs7zFdb4Uu7C5PmQRhQdB3wA3fUdkV6mkYfdDFH\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xc61b3603089b09a730d8ca72e9133a496cc4405da40e9b87c12f073245d774bf\",\"urls\":[\"bzz-raw://de8bb0003d53de236913f0e0102e7a9d015e02098f2495edd000f207fe2be2f4\",\"dweb:/ipfs/QmbtwNwAJEehWWL7yGGyyMoenQvcqtz91pqLgQPpLRoLYC\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzz-raw://d0abb99bb8bfc2bc0a89902b8ed1dc0442ad08cc78cee64c291b3df6a27bcccc\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]}},\"version\":1}",
  "bytecode": "0x60806040526001805460ff19168117905561271060025534801561002257600080fd5b506107f9806100326000396000f3fe6080604052600436106100f35760003560e01c80637bcc7f811161008a578063a91d58b411610059578063a91d58b4146102a5578063d826f88f14610358578063dc3d6da81461036d578063f15d1a9014610394576100f3565b80637bcc7f811461023e5780638403c1361461026a5780639890220b1461010a578063a15c3bbb14610290576100f3565b80632e334452116100c65780632e334452146101515780635a89f810146101db5780636ed15f9414610149578063799cd33314610214576100f3565b806307acd5cb146100f55780630a81df181461010a57806328f9f3e61461011f5780632930e17014610149575b005b34801561010157600080fd5b506100f3610440565b34801561011657600080fd5b506100f3610476565b34801561012b57600080fd5b506100f36004803603602081101561014257600080fd5b50356104a2565b6100f3610474565b34801561015d57600080fd5b506101666104a7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a0578181015183820152602001610188565b50505050905090810190601f1680156101cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e757600080fd5b506100f3600480360360408110156101fe57600080fd5b506001600160a01b03813516906020013561053e565b34801561022057600080fd5b506100f36004803603602081101561023757600080fd5b50356105c3565b34801561024a57600080fd5b506100f36004803603602081101561026157600080fd5b503515156105f9565b6100f36004803603602081101561028057600080fd5b50356001600160a01b031661060c565b34801561029c57600080fd5b506100f3610474565b3480156102b157600080fd5b506100f3600480360360208110156102c857600080fd5b8101906020810181356401000000008111156102e357600080fd5b8201836020820111156102f557600080fd5b8035906020019184600183028401116401000000008311171561031757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061069a945050505050565b34801561036457600080fd5b506100f36106ad565b34801561037957600080fd5b506103826106bb565b60408051918252519081900360200190f35b3480156103a057600080fd5b5061042c600480360360a08110156103b757600080fd5b60ff8235169160208101359160408201359160608101359181019060a0810160808201356401000000008111156103ed57600080fd5b8201836020820111156103ff57600080fd5b8035906020019184600183028401116401000000008311171561042157600080fd5b5090925090506106c1565b604080519115158252519081900360200190f35b47156104745760405133904780156108fc02916000818181858888f19350505050158015610472573d6000803e3d6000fd5b505b565b6040516000904780156108fc029183818181858288f19350505050158015610472573d6000803e3d6000fd5b600255565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105335780601f1061050857610100808354040283529160200191610533565b820191906000526020600020905b81548152906001019060200180831161051657829003601f168201915b505050505090505b90565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b15801561059357600080fd5b505af11580156105a7573d6000803e3d6000fd5b505050506040513d60208110156105bd57600080fd5b50505050565b6040805182815290517f34f611bedd4f8c135323bbfc4921e3f6e4feb7eef591036eed6af5462e6cfab09181900360200190a150565b6001805460ff1916911515919091179055565b60003411610661576040805162461bcd60e51b815260206004820152601c60248201527f76616c7565206d7573742062652067726561746572207468616e203000000000604482015290519081900360640190fd5b6040516001600160a01b038216903480156108fc02916000818181858888f19350505050158015610696573d6000803e3d6000fd5b5050565b805161069690600090602084019061072c565b6001805460ff191681179055565b60025490565b60015460009060ff1661071b576040805162461bcd60e51b815260206004820152601b60248201527f5369676e6174757265206973206e6f74206672617564756c656e740000000000604482015290519081900360640190fd5b5060015460ff169695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061076d57805160ff191683800117855561079a565b8280016001018555821561079a579182015b8281111561079a57825182559160200191906001019061077f565b506107a69291506107aa565b5090565b61053b91905b808211156107a657600081556001016107b056fea265627a7a7231582026c13af3512cc4aff7530dd69587167163b47bc1bdd7ea75982f3a5c9a1dcc4464736f6c63430005110032",
  "deployedBytecode": "0x6080604052600436106100f35760003560e01c80637bcc7f811161008a578063a91d58b411610059578063a91d58b4146102a5578063d826f88f14610358578063dc3d6da81461036d578063f15d1a9014610394576100f3565b80637bcc7f811461023e5780638403c1361461026a5780639890220b1461010a578063a15c3bbb14610290576100f3565b80632e334452116100c65780632e334452146101515780635a89f810146101db5780636ed15f9414610149578063799cd33314610214576100f3565b806307acd5cb146100f55780630a81df181461010a57806328f9f3e61461011f5780632930e17014610149575b005b34801561010157600080fd5b506100f3610440565b34801561011657600080fd5b506100f3610476565b34801561012b57600080fd5b506100f36004803603602081101561014257600080fd5b50356104a2565b6100f3610474565b34801561015d57600080fd5b506101666104a7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a0578181015183820152602001610188565b50505050905090810190601f1680156101cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e757600080fd5b506100f3600480360360408110156101fe57600080fd5b506001600160a01b03813516906020013561053e565b34801561022057600080fd5b506100f36004803603602081101561023757600080fd5b50356105c3565b34801561024a57600080fd5b506100f36004803603602081101561026157600080fd5b503515156105f9565b6100f36004803603602081101561028057600080fd5b50356001600160a01b031661060c565b34801561029c57600080fd5b506100f3610474565b3480156102b157600080fd5b506100f3600480360360208110156102c857600080fd5b8101906020810181356401000000008111156102e357600080fd5b8201836020820111156102f557600080fd5b8035906020019184600183028401116401000000008311171561031757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061069a945050505050565b34801561036457600080fd5b506100f36106ad565b34801561037957600080fd5b506103826106bb565b60408051918252519081900360200190f35b3480156103a057600080fd5b5061042c600480360360a08110156103b757600080fd5b60ff8235169160208101359160408201359160608101359181019060a0810160808201356401000000008111156103ed57600080fd5b8201836020820111156103ff57600080fd5b8035906020019184600183028401116401000000008311171561042157600080fd5b5090925090506106c1565b604080519115158252519081900360200190f35b47156104745760405133904780156108fc02916000818181858888f19350505050158015610472573d6000803e3d6000fd5b505b565b6040516000904780156108fc029183818181858288f19350505050158015610472573d6000803e3d6000fd5b600255565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105335780601f1061050857610100808354040283529160200191610533565b820191906000526020600020905b81548152906001019060200180831161051657829003601f168201915b505050505090505b90565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b15801561059357600080fd5b505af11580156105a7573d6000803e3d6000fd5b505050506040513d60208110156105bd57600080fd5b50505050565b6040805182815290517f34f611bedd4f8c135323bbfc4921e3f6e4feb7eef591036eed6af5462e6cfab09181900360200190a150565b6001805460ff1916911515919091179055565b60003411610661576040805162461bcd60e51b815260206004820152601c60248201527f76616c7565206d7573742062652067726561746572207468616e203000000000604482015290519081900360640190fd5b6040516001600160a01b038216903480156108fc02916000818181858888f19350505050158015610696573d6000803e3d6000fd5b5050565b805161069690600090602084019061072c565b6001805460ff191681179055565b60025490565b60015460009060ff1661071b576040805162461bcd60e51b815260206004820152601b60248201527f5369676e6174757265206973206e6f74206672617564756c656e740000000000604482015290519081900360640190fd5b5060015460ff169695505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061076d57805160ff191683800117855561079a565b8280016001018555821561079a579182015b8281111561079a57825182559160200191906001019061077f565b506107a69291506107aa565b5090565b61053b91905b808211156107a657600081556001016107b056fea265627a7a7231582026c13af3512cc4aff7530dd69587167163b47bc1bdd7ea75982f3a5c9a1dcc4464736f6c63430005110032",
  "sourceMap": "335:2370:35:-;;;420:4;405:19;;-1:-1:-1;;405:19:35;;;;;451:5;430:26;;335:2370;5:2:-1;;;;30:1;27;20:12;5:2;335:2370:35;;;;;;;",
  "deployedSourceMap": "335:2370:35:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1315:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1315:151:35;;;:::i;2320:97::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2320:97:35;;;:::i;2222:92::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2222:92:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2222:92:35;;:::i;1034:111::-;;;:::i;740:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;740:94:35;;;:::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;740:94:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1151:158:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1151:158:35;;;;;;;;:::i;939:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;939:89:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;939:89:35;;:::i;2139:77::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2139:77:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2139:77:35;;;;:::i;2423:191::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2423:191:35;-1:-1:-1;;;;;2423:191:35;;:::i;1839:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1839:93:35;;;:::i;2040:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2040:93:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2040:93:35;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2040:93:35;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2040:93:35;;;;;;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;2040:93:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2040:93:35;;-1:-1:-1;2040:93:35;;-1:-1:-1;;;;;2040:93:35:i;1979:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1979:55:35;;;:::i;840:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;840:93:35;;;:::i;:::-;;;;;;;;;;;;;;;;1594:239;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1594:239:35;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1594:239:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1594:239:35;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1594:239:35;;;;;;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;-1:-1;1594:239:35;;-1:-1:-1;1594:239:35;-1:-1:-1;1594:239:35;:::i;:::-;;;;;;;;;;;;;;;;;;1315:151;1366:21;:25;1362:98;;1407:42;;:10;;1427:21;1407:42;;;;;;;;;1427:21;1407:10;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1407:42:35;1362:98;1315:151::o;2320:97::-;2368:42;;2376:1;;2388:21;2368:42;;;;;2376:1;2368:42;2376:1;2368:42;2388:21;2376:1;2368:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2222:92:35;2283:10;:24;2222:92::o;740:94::-;818:9;811:16;;;;;;;;-1:-1:-1;;811:16:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;787:12;;811:16;;818:9;;811:16;;818:9;811:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:94;;:::o;1151:158::-;1233:69;;;-1:-1:-1;;;1233:69:35;;1268:10;1233:69;;;;1288:4;1233:69;;;;;;;;;;;;-1:-1:-1;;;;;1233:34:35;;;;;:69;;;;;;;;;;;;;;-1:-1:-1;1233:34:35;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;1233:69:35;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1233:69:35;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;1151:158:35:o;939:89::-;994:27;;;;;;;;;;;;;;;;;939:89;:::o;2139:77::-;2191:7;:18;;-1:-1:-1;;2191:18:35;;;;;;;;;;2139:77::o;2423:191::-;2528:1;2516:9;:13;2508:54;;;;;-1:-1:-1;;;2508:54:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;2572:35;;-1:-1:-1;;;;;2572:24:35;;;2597:9;2572:35;;;;;;;;;2597:9;2572:24;:35;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2572:35:35;2423:191;:::o;2040:93::-;2104:22;;;;:9;;:22;;;;;:::i;1979:55::-;2023:4;2013:14;;-1:-1:-1;;2013:14:35;;;;;1979:55::o;840:93::-;916:10;;840:93;:::o;1594:239::-;1762:7;;1738:4;;1762:7;;1754:47;;;;;-1:-1:-1;;;1754:47:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1819:7:35;;;;1594:239;;;;;;;;:::o;335:2370::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;335:2370:35;;;-1:-1:-1;335:2370:35;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity 0.5.17;\n\nimport {\n    IBondedECDSAKeep\n} from \"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\";\nimport {TestTBTCToken} from \"../system/TestTBTCToken.sol\";\n\n/// @notice Implementation of ECDSAKeep interface used in tests only\n/// @dev This is a stub used in tests, so we don't have to call actual ECDSAKeep\ncontract ECDSAKeepStub is IBondedECDSAKeep {\n    bytes publicKey;\n    bool success = true;\n    uint256 bondAmount = 10000;\n\n    // Notification that the keep was requested to sign a digest.\n    event SignatureRequested(bytes32 digest);\n\n    // Define fallback function so the contract can accept ether.\n    function() external payable {}\n\n    // Functions implemented for IBondedECDSAKeep interface.\n\n    function getPublicKey() external view returns (bytes memory) {\n        return publicKey;\n    }\n\n    function checkBondAmount() external view returns (uint256) {\n        return bondAmount;\n    }\n\n    function sign(bytes32 _digest) external {\n        emit SignatureRequested(_digest);\n    }\n\n    function distributeETHReward() external payable {\n        // solium-disable-previous-line no-empty-blocks\n    }\n\n    function distributeERC20Reward(address _asset, uint256 _value) external {\n        TestTBTCToken(_asset).transferFrom(msg.sender, address(this), _value);\n    }\n\n    function seizeSignerBonds() external {\n        if (address(this).balance > 0) {\n            msg.sender.transfer(address(this).balance);\n        }\n    }\n\n    function returnPartialSignerBonds() external payable {\n        // solium-disable-previous-line no-empty-blocks\n    }\n\n    function submitSignatureFraud(\n        uint8,\n        bytes32,\n        bytes32,\n        bytes32,\n        bytes calldata\n    ) external returns (bool) {\n        require(success, \"Signature is not fraudulent\");\n\n        return success;\n    }\n\n    function closeKeep() external {\n        // solium-disable-previous-line no-empty-blocks\n    }\n\n    // Functions to set data for tests.\n\n    function reset() public {\n        success = true;\n    }\n\n    function setPublicKey(bytes memory _publicKey) public {\n        publicKey = _publicKey;\n    }\n\n    function setSuccess(bool _success) public {\n        success = _success;\n    }\n\n    function setBondAmount(uint256 _bondAmount) public {\n        bondAmount = _bondAmount;\n    }\n\n    function burnContractBalance() public {\n        address(0).transfer(address(this).balance);\n    }\n\n    function pushFundsFromKeep(address payable _depositAddress) public payable {\n        require(msg.value > 0, \"value must be greater than 0\");\n        _depositAddress.transfer(msg.value);\n    }\n\n    function drain() public {\n        address(0).transfer(address(this).balance);\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/keep/ECDSAKeepStub.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/keep/ECDSAKeepStub.sol",
    "exportedSymbols": {
      "ECDSAKeepStub": [
        10522
      ]
    },
    "id": 10523,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10308,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:35"
      },
      {
        "absolutePath": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
        "file": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
        "id": 10310,
        "nodeType": "ImportDirective",
        "scope": 10523,
        "sourceUnit": 11429,
        "src": "25:99:35",
        "symbolAliases": [
          {
            "foreign": 10309,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/system/TestTBTCToken.sol",
        "file": "../system/TestTBTCToken.sol",
        "id": 10312,
        "nodeType": "ImportDirective",
        "scope": 10523,
        "sourceUnit": 11377,
        "src": "125:58:35",
        "symbolAliases": [
          {
            "foreign": 10311,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10313,
              "name": "IBondedECDSAKeep",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11428,
              "src": "361:16:35",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IBondedECDSAKeep_$11428",
                "typeString": "contract IBondedECDSAKeep"
              }
            },
            "id": 10314,
            "nodeType": "InheritanceSpecifier",
            "src": "361:16:35"
          }
        ],
        "contractDependencies": [
          11428
        ],
        "contractKind": "contract",
        "documentation": "@notice Implementation of ECDSAKeep interface used in tests only\n @dev This is a stub used in tests, so we don't have to call actual ECDSAKeep",
        "fullyImplemented": true,
        "id": 10522,
        "linearizedBaseContracts": [
          10522,
          11428
        ],
        "name": "ECDSAKeepStub",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 10316,
            "name": "publicKey",
            "nodeType": "VariableDeclaration",
            "scope": 10522,
            "src": "384:15:35",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 10315,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "384:5:35",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 10319,
            "name": "success",
            "nodeType": "VariableDeclaration",
            "scope": 10522,
            "src": "405:19:35",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 10317,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "405:4:35",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "74727565",
              "id": 10318,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "bool",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "420:4:35",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "value": "true"
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 10322,
            "name": "bondAmount",
            "nodeType": "VariableDeclaration",
            "scope": 10522,
            "src": "430:26:35",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 10320,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "430:7:35",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3130303030",
              "id": 10321,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "451:5:35",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_10000_by_1",
                "typeString": "int_const 10000"
              },
              "value": "10000"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 10326,
            "name": "SignatureRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10324,
                  "indexed": false,
                  "name": "digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 10326,
                  "src": "554:14:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10323,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "553:16:35"
            },
            "src": "529:41:35"
          },
          {
            "body": {
              "id": 10329,
              "nodeType": "Block",
              "src": "670:2:35",
              "statements": []
            },
            "documentation": null,
            "id": 10330,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10327,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "650:2:35"
            },
            "returnParameters": {
              "id": 10328,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "670:0:35"
            },
            "scope": 10522,
            "src": "642:30:35",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10337,
              "nodeType": "Block",
              "src": "801:33:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10335,
                    "name": "publicKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10316,
                    "src": "818:9:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 10334,
                  "id": 10336,
                  "nodeType": "Return",
                  "src": "811:16:35"
                }
              ]
            },
            "documentation": null,
            "id": 10338,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPublicKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10331,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "761:2:35"
            },
            "returnParameters": {
              "id": 10334,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10333,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10338,
                  "src": "787:12:35",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10332,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "787:5:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "786:14:35"
            },
            "scope": 10522,
            "src": "740:94:35",
            "stateMutability": "view",
            "superFunction": 11383,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10345,
              "nodeType": "Block",
              "src": "899:34:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10343,
                    "name": "bondAmount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10322,
                    "src": "916:10:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10342,
                  "id": 10344,
                  "nodeType": "Return",
                  "src": "909:17:35"
                }
              ]
            },
            "documentation": null,
            "id": 10346,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkBondAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10339,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "864:2:35"
            },
            "returnParameters": {
              "id": 10342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10341,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10346,
                  "src": "890:7:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10340,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "890:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "889:9:35"
            },
            "scope": 10522,
            "src": "840:93:35",
            "stateMutability": "view",
            "superFunction": 11388,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10355,
              "nodeType": "Block",
              "src": "979:49:35",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10352,
                        "name": "_digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10348,
                        "src": "1013:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10351,
                      "name": "SignatureRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10326,
                      "src": "994:18:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 10353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "994:27:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10354,
                  "nodeType": "EmitStatement",
                  "src": "989:32:35"
                }
              ]
            },
            "documentation": null,
            "id": 10356,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sign",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10349,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10348,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 10356,
                  "src": "953:15:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10347,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "953:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "952:17:35"
            },
            "returnParameters": {
              "id": 10350,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "979:0:35"
            },
            "scope": 10522,
            "src": "939:89:35",
            "stateMutability": "nonpayable",
            "superFunction": 11393,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10359,
              "nodeType": "Block",
              "src": "1082:63:35",
              "statements": []
            },
            "documentation": null,
            "id": 10360,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "distributeETHReward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10357,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1062:2:35"
            },
            "returnParameters": {
              "id": 10358,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1082:0:35"
            },
            "scope": 10522,
            "src": "1034:111:35",
            "stateMutability": "payable",
            "superFunction": 11396,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10379,
              "nodeType": "Block",
              "src": "1223:86:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10371,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "1268:3:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1268:10:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10374,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18502,
                            "src": "1288:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                              "typeString": "contract ECDSAKeepStub"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                              "typeString": "contract ECDSAKeepStub"
                            }
                          ],
                          "id": 10373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1280:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1280:13:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10376,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10364,
                        "src": "1295:6:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10368,
                            "name": "_asset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10362,
                            "src": "1247:6:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10367,
                          "name": "TestTBTCToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11376,
                          "src": "1233:13:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_TestTBTCToken_$11376_$",
                            "typeString": "type(contract TestTBTCToken)"
                          }
                        },
                        "id": 10369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1233:21:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TestTBTCToken_$11376",
                          "typeString": "contract TestTBTCToken"
                        }
                      },
                      "id": 10370,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17096,
                      "src": "1233:34:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) external returns (bool)"
                      }
                    },
                    "id": 10377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1233:69:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10378,
                  "nodeType": "ExpressionStatement",
                  "src": "1233:69:35"
                }
              ]
            },
            "documentation": null,
            "id": 10380,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "distributeERC20Reward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10362,
                  "name": "_asset",
                  "nodeType": "VariableDeclaration",
                  "scope": 10380,
                  "src": "1182:14:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10361,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1182:7:35",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10364,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 10380,
                  "src": "1198:14:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10363,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1198:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1181:32:35"
            },
            "returnParameters": {
              "id": 10366,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1223:0:35"
            },
            "scope": 10522,
            "src": "1151:158:35",
            "stateMutability": "nonpayable",
            "superFunction": 11403,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10402,
              "nodeType": "Block",
              "src": "1352:114:35",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10384,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18502,
                            "src": "1374:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                              "typeString": "contract ECDSAKeepStub"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                              "typeString": "contract ECDSAKeepStub"
                            }
                          ],
                          "id": 10383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1366:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1366:13:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 10386,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1366:21:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1390:1:35",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1366:25:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10401,
                  "nodeType": "IfStatement",
                  "src": "1362:98:35",
                  "trueBody": {
                    "id": 10400,
                    "nodeType": "Block",
                    "src": "1393:67:35",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 10395,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18502,
                                    "src": "1435:4:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                      "typeString": "contract ECDSAKeepStub"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                      "typeString": "contract ECDSAKeepStub"
                                    }
                                  ],
                                  "id": 10394,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1427:7:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 10396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1427:13:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 10397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balance",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1427:21:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 10389,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18360,
                                "src": "1407:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1407:10:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 10393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1407:19:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 10398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1407:42:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10399,
                        "nodeType": "ExpressionStatement",
                        "src": "1407:42:35"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10403,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "seizeSignerBonds",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10381,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1340:2:35"
            },
            "returnParameters": {
              "id": 10382,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1352:0:35"
            },
            "scope": 10522,
            "src": "1315:151:35",
            "stateMutability": "nonpayable",
            "superFunction": 11406,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10406,
              "nodeType": "Block",
              "src": "1525:63:35",
              "statements": []
            },
            "documentation": null,
            "id": 10407,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "returnPartialSignerBonds",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10404,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1505:2:35"
            },
            "returnParameters": {
              "id": 10405,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1525:0:35"
            },
            "scope": 10522,
            "src": "1472:116:35",
            "stateMutability": "payable",
            "superFunction": 11409,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10429,
              "nodeType": "Block",
              "src": "1744:89:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10423,
                        "name": "success",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10319,
                        "src": "1762:7:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5369676e6174757265206973206e6f74206672617564756c656e74",
                        "id": 10424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1771:29:35",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cc67f98c017187a86f4f3c70aa952571902dc8305078786275372a60405c390a",
                          "typeString": "literal_string \"Signature is not fraudulent\""
                        },
                        "value": "Signature is not fraudulent"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cc67f98c017187a86f4f3c70aa952571902dc8305078786275372a60405c390a",
                          "typeString": "literal_string \"Signature is not fraudulent\""
                        }
                      ],
                      "id": 10422,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "1754:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1754:47:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10426,
                  "nodeType": "ExpressionStatement",
                  "src": "1754:47:35"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10427,
                    "name": "success",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10319,
                    "src": "1819:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10421,
                  "id": 10428,
                  "nodeType": "Return",
                  "src": "1812:14:35"
                }
              ]
            },
            "documentation": null,
            "id": 10430,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "submitSignatureFraud",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10418,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10409,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10430,
                  "src": "1633:5:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 10408,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1633:5:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10411,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10430,
                  "src": "1648:7:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10410,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1648:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10413,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10430,
                  "src": "1665:7:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10412,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1665:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10415,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10430,
                  "src": "1682:7:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10414,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1682:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10417,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10430,
                  "src": "1699:14:35",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10416,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1699:5:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1623:96:35"
            },
            "returnParameters": {
              "id": 10421,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10420,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10430,
                  "src": "1738:4:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10419,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1738:4:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1737:6:35"
            },
            "scope": 10522,
            "src": "1594:239:35",
            "stateMutability": "nonpayable",
            "superFunction": 11424,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10433,
              "nodeType": "Block",
              "src": "1869:63:35",
              "statements": []
            },
            "documentation": null,
            "id": 10434,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "closeKeep",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10431,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1857:2:35"
            },
            "returnParameters": {
              "id": 10432,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1869:0:35"
            },
            "scope": 10522,
            "src": "1839:93:35",
            "stateMutability": "nonpayable",
            "superFunction": 11427,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10441,
              "nodeType": "Block",
              "src": "2003:31:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10437,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10319,
                      "src": "2013:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 10438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2023:4:35",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2013:14:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10440,
                  "nodeType": "ExpressionStatement",
                  "src": "2013:14:35"
                }
              ]
            },
            "documentation": null,
            "id": 10442,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "reset",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10435,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1993:2:35"
            },
            "returnParameters": {
              "id": 10436,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2003:0:35"
            },
            "scope": 10522,
            "src": "1979:55:35",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10451,
              "nodeType": "Block",
              "src": "2094:39:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10447,
                      "name": "publicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10316,
                      "src": "2104:9:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10448,
                      "name": "_publicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10444,
                      "src": "2116:10:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "2104:22:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 10450,
                  "nodeType": "ExpressionStatement",
                  "src": "2104:22:35"
                }
              ]
            },
            "documentation": null,
            "id": 10452,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setPublicKey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10445,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10444,
                  "name": "_publicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 10452,
                  "src": "2062:23:35",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10443,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2062:5:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2061:25:35"
            },
            "returnParameters": {
              "id": 10446,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2094:0:35"
            },
            "scope": 10522,
            "src": "2040:93:35",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10461,
              "nodeType": "Block",
              "src": "2181:35:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10457,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10319,
                      "src": "2191:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10458,
                      "name": "_success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10454,
                      "src": "2201:8:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2191:18:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10460,
                  "nodeType": "ExpressionStatement",
                  "src": "2191:18:35"
                }
              ]
            },
            "documentation": null,
            "id": 10462,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSuccess",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10454,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 10462,
                  "src": "2159:13:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10453,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2159:4:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2158:15:35"
            },
            "returnParameters": {
              "id": 10456,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2181:0:35"
            },
            "scope": 10522,
            "src": "2139:77:35",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10471,
              "nodeType": "Block",
              "src": "2273:41:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10469,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 10467,
                      "name": "bondAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10322,
                      "src": "2283:10:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 10468,
                      "name": "_bondAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10464,
                      "src": "2296:11:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2283:24:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10470,
                  "nodeType": "ExpressionStatement",
                  "src": "2283:24:35"
                }
              ]
            },
            "documentation": null,
            "id": 10472,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setBondAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10464,
                  "name": "_bondAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 10472,
                  "src": "2245:19:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10463,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2245:7:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2244:21:35"
            },
            "returnParameters": {
              "id": 10466,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2273:0:35"
            },
            "scope": 10522,
            "src": "2222:92:35",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10485,
              "nodeType": "Block",
              "src": "2358:59:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10480,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18502,
                              "src": "2396:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                "typeString": "contract ECDSAKeepStub"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                "typeString": "contract ECDSAKeepStub"
                              }
                            ],
                            "id": 10479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2388:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 10481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2388:13:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 10482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2388:21:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2376:1:35",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 10475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2368:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2368:10:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 10478,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2368:19:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 10483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2368:42:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10484,
                  "nodeType": "ExpressionStatement",
                  "src": "2368:42:35"
                }
              ]
            },
            "documentation": null,
            "id": 10486,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burnContractBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2348:2:35"
            },
            "returnParameters": {
              "id": 10474,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2358:0:35"
            },
            "scope": 10522,
            "src": "2320:97:35",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10506,
              "nodeType": "Block",
              "src": "2498:116:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 10495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 10492,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18360,
                            "src": "2516:3:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 10493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2516:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2528:1:35",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2516:13:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "76616c7565206d7573742062652067726561746572207468616e2030",
                        "id": 10496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2531:30:35",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_446f53f2fdcb9682b5418770e7f05a91bd01b62cdb8267645af8e0d6c58f0b5f",
                          "typeString": "literal_string \"value must be greater than 0\""
                        },
                        "value": "value must be greater than 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_446f53f2fdcb9682b5418770e7f05a91bd01b62cdb8267645af8e0d6c58f0b5f",
                          "typeString": "literal_string \"value must be greater than 0\""
                        }
                      ],
                      "id": 10491,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "2508:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2508:54:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10498,
                  "nodeType": "ExpressionStatement",
                  "src": "2508:54:35"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10502,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "2597:3:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2597:9:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10499,
                        "name": "_depositAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10488,
                        "src": "2572:15:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 10501,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2572:24:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 10504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2572:35:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10505,
                  "nodeType": "ExpressionStatement",
                  "src": "2572:35:35"
                }
              ]
            },
            "documentation": null,
            "id": 10507,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "pushFundsFromKeep",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10489,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10488,
                  "name": "_depositAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 10507,
                  "src": "2450:31:35",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 10487,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2450:15:35",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2449:33:35"
            },
            "returnParameters": {
              "id": 10490,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2498:0:35"
            },
            "scope": 10522,
            "src": "2423:191:35",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10520,
              "nodeType": "Block",
              "src": "2644:59:35",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10515,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18502,
                              "src": "2682:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                "typeString": "contract ECDSAKeepStub"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                "typeString": "contract ECDSAKeepStub"
                              }
                            ],
                            "id": 10514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2674:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 10516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2674:13:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 10517,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2674:21:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2662:1:35",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 10510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2654:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 10512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2654:10:35",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 10513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2654:19:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 10518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2654:42:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10519,
                  "nodeType": "ExpressionStatement",
                  "src": "2654:42:35"
                }
              ]
            },
            "documentation": null,
            "id": 10521,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "drain",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10508,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2634:2:35"
            },
            "returnParameters": {
              "id": 10509,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2644:0:35"
            },
            "scope": 10522,
            "src": "2620:83:35",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 10523,
        "src": "335:2370:35"
      }
    ],
    "src": "0:2706:35"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/keep/ECDSAKeepStub.sol",
      "exportedSymbols": {
        "ECDSAKeepStub": [
          10522
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 10308,
        "name": "PragmaDirective",
        "src": "0:23:35"
      },
      {
        "attributes": {
          "SourceUnit": 11429,
          "absolutePath": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
          "file": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
          "scope": 10523,
          "symbolAliases": [
            {
              "foreign": 10309,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 10310,
        "name": "ImportDirective",
        "src": "25:99:35"
      },
      {
        "attributes": {
          "SourceUnit": 11377,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/test/system/TestTBTCToken.sol",
          "file": "../system/TestTBTCToken.sol",
          "scope": 10523,
          "symbolAliases": [
            {
              "foreign": 10311,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 10312,
        "name": "ImportDirective",
        "src": "125:58:35"
      },
      {
        "attributes": {
          "contractDependencies": [
            11428
          ],
          "contractKind": "contract",
          "documentation": "@notice Implementation of ECDSAKeep interface used in tests only\n @dev This is a stub used in tests, so we don't have to call actual ECDSAKeep",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            10522,
            11428
          ],
          "name": "ECDSAKeepStub",
          "scope": 10523
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "IBondedECDSAKeep",
                  "referencedDeclaration": 11428,
                  "type": "contract IBondedECDSAKeep"
                },
                "id": 10313,
                "name": "UserDefinedTypeName",
                "src": "361:16:35"
              }
            ],
            "id": 10314,
            "name": "InheritanceSpecifier",
            "src": "361:16:35"
          },
          {
            "attributes": {
              "constant": false,
              "name": "publicKey",
              "scope": 10522,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes",
                  "type": "bytes"
                },
                "id": 10315,
                "name": "ElementaryTypeName",
                "src": "384:5:35"
              }
            ],
            "id": 10316,
            "name": "VariableDeclaration",
            "src": "384:15:35"
          },
          {
            "attributes": {
              "constant": false,
              "name": "success",
              "scope": 10522,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bool",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "bool",
                  "type": "bool"
                },
                "id": 10317,
                "name": "ElementaryTypeName",
                "src": "405:4:35"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "74727565",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "bool",
                  "type": "bool",
                  "value": "true"
                },
                "id": 10318,
                "name": "Literal",
                "src": "420:4:35"
              }
            ],
            "id": 10319,
            "name": "VariableDeclaration",
            "src": "405:19:35"
          },
          {
            "attributes": {
              "constant": false,
              "name": "bondAmount",
              "scope": 10522,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 10320,
                "name": "ElementaryTypeName",
                "src": "430:7:35"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "3130303030",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 10000",
                  "value": "10000"
                },
                "id": 10321,
                "name": "Literal",
                "src": "451:5:35"
              }
            ],
            "id": 10322,
            "name": "VariableDeclaration",
            "src": "430:26:35"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "SignatureRequested"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "digest",
                      "scope": 10326,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10323,
                        "name": "ElementaryTypeName",
                        "src": "554:7:35"
                      }
                    ],
                    "id": 10324,
                    "name": "VariableDeclaration",
                    "src": "554:14:35"
                  }
                ],
                "id": 10325,
                "name": "ParameterList",
                "src": "553:16:35"
              }
            ],
            "id": 10326,
            "name": "EventDefinition",
            "src": "529:41:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "fallback",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 10522,
              "stateMutability": "payable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10327,
                "name": "ParameterList",
                "src": "650:2:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10328,
                "name": "ParameterList",
                "src": "670:0:35"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 10329,
                "name": "Block",
                "src": "670:2:35"
              }
            ],
            "id": 10330,
            "name": "FunctionDefinition",
            "src": "642:30:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getPublicKey",
              "scope": 10522,
              "stateMutability": "view",
              "superFunction": 11383,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10331,
                "name": "ParameterList",
                "src": "761:2:35"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10338,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10332,
                        "name": "ElementaryTypeName",
                        "src": "787:5:35"
                      }
                    ],
                    "id": 10333,
                    "name": "VariableDeclaration",
                    "src": "787:12:35"
                  }
                ],
                "id": 10334,
                "name": "ParameterList",
                "src": "786:14:35"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 10334
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 10316,
                          "type": "bytes storage ref",
                          "value": "publicKey"
                        },
                        "id": 10335,
                        "name": "Identifier",
                        "src": "818:9:35"
                      }
                    ],
                    "id": 10336,
                    "name": "Return",
                    "src": "811:16:35"
                  }
                ],
                "id": 10337,
                "name": "Block",
                "src": "801:33:35"
              }
            ],
            "id": 10338,
            "name": "FunctionDefinition",
            "src": "740:94:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "checkBondAmount",
              "scope": 10522,
              "stateMutability": "view",
              "superFunction": 11388,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10339,
                "name": "ParameterList",
                "src": "864:2:35"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10346,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10340,
                        "name": "ElementaryTypeName",
                        "src": "890:7:35"
                      }
                    ],
                    "id": 10341,
                    "name": "VariableDeclaration",
                    "src": "890:7:35"
                  }
                ],
                "id": 10342,
                "name": "ParameterList",
                "src": "889:9:35"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 10342
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 10322,
                          "type": "uint256",
                          "value": "bondAmount"
                        },
                        "id": 10343,
                        "name": "Identifier",
                        "src": "916:10:35"
                      }
                    ],
                    "id": 10344,
                    "name": "Return",
                    "src": "909:17:35"
                  }
                ],
                "id": 10345,
                "name": "Block",
                "src": "899:34:35"
              }
            ],
            "id": 10346,
            "name": "FunctionDefinition",
            "src": "840:93:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "sign",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": 11393,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_digest",
                      "scope": 10356,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10347,
                        "name": "ElementaryTypeName",
                        "src": "953:7:35"
                      }
                    ],
                    "id": 10348,
                    "name": "VariableDeclaration",
                    "src": "953:15:35"
                  }
                ],
                "id": 10349,
                "name": "ParameterList",
                "src": "952:17:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10350,
                "name": "ParameterList",
                "src": "979:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10326,
                              "type": "function (bytes32)",
                              "value": "SignatureRequested"
                            },
                            "id": 10351,
                            "name": "Identifier",
                            "src": "994:18:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10348,
                              "type": "bytes32",
                              "value": "_digest"
                            },
                            "id": 10352,
                            "name": "Identifier",
                            "src": "1013:7:35"
                          }
                        ],
                        "id": 10353,
                        "name": "FunctionCall",
                        "src": "994:27:35"
                      }
                    ],
                    "id": 10354,
                    "name": "EmitStatement",
                    "src": "989:32:35"
                  }
                ],
                "id": 10355,
                "name": "Block",
                "src": "979:49:35"
              }
            ],
            "id": 10356,
            "name": "FunctionDefinition",
            "src": "939:89:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "distributeETHReward",
              "scope": 10522,
              "stateMutability": "payable",
              "superFunction": 11396,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10357,
                "name": "ParameterList",
                "src": "1062:2:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10358,
                "name": "ParameterList",
                "src": "1082:0:35"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 10359,
                "name": "Block",
                "src": "1082:63:35"
              }
            ],
            "id": 10360,
            "name": "FunctionDefinition",
            "src": "1034:111:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "distributeERC20Reward",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": 11403,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_asset",
                      "scope": 10380,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 10361,
                        "name": "ElementaryTypeName",
                        "src": "1182:7:35"
                      }
                    ],
                    "id": 10362,
                    "name": "VariableDeclaration",
                    "src": "1182:14:35"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 10380,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10363,
                        "name": "ElementaryTypeName",
                        "src": "1198:7:35"
                      }
                    ],
                    "id": 10364,
                    "name": "VariableDeclaration",
                    "src": "1198:14:35"
                  }
                ],
                "id": 10365,
                "name": "ParameterList",
                "src": "1181:32:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10366,
                "name": "ParameterList",
                "src": "1223:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transferFrom",
                              "referencedDeclaration": 17096,
                              "type": "function (address,address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract TestTBTCToken",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11376,
                                      "type": "type(contract TestTBTCToken)",
                                      "value": "TestTBTCToken"
                                    },
                                    "id": 10367,
                                    "name": "Identifier",
                                    "src": "1233:13:35"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 10362,
                                      "type": "address",
                                      "value": "_asset"
                                    },
                                    "id": 10368,
                                    "name": "Identifier",
                                    "src": "1247:6:35"
                                  }
                                ],
                                "id": 10369,
                                "name": "FunctionCall",
                                "src": "1233:21:35"
                              }
                            ],
                            "id": 10370,
                            "name": "MemberAccess",
                            "src": "1233:34:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 10371,
                                "name": "Identifier",
                                "src": "1268:3:35"
                              }
                            ],
                            "id": 10372,
                            "name": "MemberAccess",
                            "src": "1268:10:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                      "typeString": "contract ECDSAKeepStub"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 10373,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1280:7:35"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18502,
                                  "type": "contract ECDSAKeepStub",
                                  "value": "this"
                                },
                                "id": 10374,
                                "name": "Identifier",
                                "src": "1288:4:35"
                              }
                            ],
                            "id": 10375,
                            "name": "FunctionCall",
                            "src": "1280:13:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10364,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 10376,
                            "name": "Identifier",
                            "src": "1295:6:35"
                          }
                        ],
                        "id": 10377,
                        "name": "FunctionCall",
                        "src": "1233:69:35"
                      }
                    ],
                    "id": 10378,
                    "name": "ExpressionStatement",
                    "src": "1233:69:35"
                  }
                ],
                "id": 10379,
                "name": "Block",
                "src": "1223:86:35"
              }
            ],
            "id": 10380,
            "name": "FunctionDefinition",
            "src": "1151:158:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "seizeSignerBonds",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": 11406,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10381,
                "name": "ParameterList",
                "src": "1340:2:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10382,
                "name": "ParameterList",
                "src": "1352:0:35"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "balance",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                          "typeString": "contract ECDSAKeepStub"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 10383,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1366:7:35"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18502,
                                      "type": "contract ECDSAKeepStub",
                                      "value": "this"
                                    },
                                    "id": 10384,
                                    "name": "Identifier",
                                    "src": "1374:4:35"
                                  }
                                ],
                                "id": 10385,
                                "name": "FunctionCall",
                                "src": "1366:13:35"
                              }
                            ],
                            "id": 10386,
                            "name": "MemberAccess",
                            "src": "1366:21:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 10387,
                            "name": "Literal",
                            "src": "1390:1:35"
                          }
                        ],
                        "id": 10388,
                        "name": "BinaryOperation",
                        "src": "1366:25:35"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "transfer",
                                      "referencedDeclaration": null,
                                      "type": "function (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sender",
                                          "referencedDeclaration": null,
                                          "type": "address payable"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 18360,
                                              "type": "msg",
                                              "value": "msg"
                                            },
                                            "id": 10389,
                                            "name": "Identifier",
                                            "src": "1407:3:35"
                                          }
                                        ],
                                        "id": 10392,
                                        "name": "MemberAccess",
                                        "src": "1407:10:35"
                                      }
                                    ],
                                    "id": 10393,
                                    "name": "MemberAccess",
                                    "src": "1407:19:35"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balance",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "address payable",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                                  "typeString": "contract ECDSAKeepStub"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(address)",
                                              "value": "address"
                                            },
                                            "id": 10394,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "1427:7:35"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 18502,
                                              "type": "contract ECDSAKeepStub",
                                              "value": "this"
                                            },
                                            "id": 10395,
                                            "name": "Identifier",
                                            "src": "1435:4:35"
                                          }
                                        ],
                                        "id": 10396,
                                        "name": "FunctionCall",
                                        "src": "1427:13:35"
                                      }
                                    ],
                                    "id": 10397,
                                    "name": "MemberAccess",
                                    "src": "1427:21:35"
                                  }
                                ],
                                "id": 10398,
                                "name": "FunctionCall",
                                "src": "1407:42:35"
                              }
                            ],
                            "id": 10399,
                            "name": "ExpressionStatement",
                            "src": "1407:42:35"
                          }
                        ],
                        "id": 10400,
                        "name": "Block",
                        "src": "1393:67:35"
                      }
                    ],
                    "id": 10401,
                    "name": "IfStatement",
                    "src": "1362:98:35"
                  }
                ],
                "id": 10402,
                "name": "Block",
                "src": "1352:114:35"
              }
            ],
            "id": 10403,
            "name": "FunctionDefinition",
            "src": "1315:151:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "returnPartialSignerBonds",
              "scope": 10522,
              "stateMutability": "payable",
              "superFunction": 11409,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10404,
                "name": "ParameterList",
                "src": "1505:2:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10405,
                "name": "ParameterList",
                "src": "1525:0:35"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 10406,
                "name": "Block",
                "src": "1525:63:35"
              }
            ],
            "id": 10407,
            "name": "FunctionDefinition",
            "src": "1472:116:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "submitSignatureFraud",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": 11424,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10430,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 10408,
                        "name": "ElementaryTypeName",
                        "src": "1633:5:35"
                      }
                    ],
                    "id": 10409,
                    "name": "VariableDeclaration",
                    "src": "1633:5:35"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10430,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10410,
                        "name": "ElementaryTypeName",
                        "src": "1648:7:35"
                      }
                    ],
                    "id": 10411,
                    "name": "VariableDeclaration",
                    "src": "1648:7:35"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10430,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10412,
                        "name": "ElementaryTypeName",
                        "src": "1665:7:35"
                      }
                    ],
                    "id": 10413,
                    "name": "VariableDeclaration",
                    "src": "1665:7:35"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10430,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 10414,
                        "name": "ElementaryTypeName",
                        "src": "1682:7:35"
                      }
                    ],
                    "id": 10415,
                    "name": "VariableDeclaration",
                    "src": "1682:7:35"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10430,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10416,
                        "name": "ElementaryTypeName",
                        "src": "1699:5:35"
                      }
                    ],
                    "id": 10417,
                    "name": "VariableDeclaration",
                    "src": "1699:14:35"
                  }
                ],
                "id": 10418,
                "name": "ParameterList",
                "src": "1623:96:35"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 10430,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 10419,
                        "name": "ElementaryTypeName",
                        "src": "1738:4:35"
                      }
                    ],
                    "id": 10420,
                    "name": "VariableDeclaration",
                    "src": "1738:4:35"
                  }
                ],
                "id": 10421,
                "name": "ParameterList",
                "src": "1737:6:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_cc67f98c017187a86f4f3c70aa952571902dc8305078786275372a60405c390a",
                                  "typeString": "literal_string \"Signature is not fraudulent\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 10422,
                            "name": "Identifier",
                            "src": "1754:7:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10319,
                              "type": "bool",
                              "value": "success"
                            },
                            "id": 10423,
                            "name": "Identifier",
                            "src": "1762:7:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5369676e6174757265206973206e6f74206672617564756c656e74",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Signature is not fraudulent\"",
                              "value": "Signature is not fraudulent"
                            },
                            "id": 10424,
                            "name": "Literal",
                            "src": "1771:29:35"
                          }
                        ],
                        "id": 10425,
                        "name": "FunctionCall",
                        "src": "1754:47:35"
                      }
                    ],
                    "id": 10426,
                    "name": "ExpressionStatement",
                    "src": "1754:47:35"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 10421
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 10319,
                          "type": "bool",
                          "value": "success"
                        },
                        "id": 10427,
                        "name": "Identifier",
                        "src": "1819:7:35"
                      }
                    ],
                    "id": 10428,
                    "name": "Return",
                    "src": "1812:14:35"
                  }
                ],
                "id": 10429,
                "name": "Block",
                "src": "1744:89:35"
              }
            ],
            "id": 10430,
            "name": "FunctionDefinition",
            "src": "1594:239:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "closeKeep",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": 11427,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10431,
                "name": "ParameterList",
                "src": "1857:2:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10432,
                "name": "ParameterList",
                "src": "1869:0:35"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 10433,
                "name": "Block",
                "src": "1869:63:35"
              }
            ],
            "id": 10434,
            "name": "FunctionDefinition",
            "src": "1839:93:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "reset",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10435,
                "name": "ParameterList",
                "src": "1993:2:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10436,
                "name": "ParameterList",
                "src": "2003:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10319,
                              "type": "bool",
                              "value": "success"
                            },
                            "id": 10437,
                            "name": "Identifier",
                            "src": "2013:7:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 10438,
                            "name": "Literal",
                            "src": "2023:4:35"
                          }
                        ],
                        "id": 10439,
                        "name": "Assignment",
                        "src": "2013:14:35"
                      }
                    ],
                    "id": 10440,
                    "name": "ExpressionStatement",
                    "src": "2013:14:35"
                  }
                ],
                "id": 10441,
                "name": "Block",
                "src": "2003:31:35"
              }
            ],
            "id": 10442,
            "name": "FunctionDefinition",
            "src": "1979:55:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setPublicKey",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_publicKey",
                      "scope": 10452,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 10443,
                        "name": "ElementaryTypeName",
                        "src": "2062:5:35"
                      }
                    ],
                    "id": 10444,
                    "name": "VariableDeclaration",
                    "src": "2062:23:35"
                  }
                ],
                "id": 10445,
                "name": "ParameterList",
                "src": "2061:25:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10446,
                "name": "ParameterList",
                "src": "2094:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10316,
                              "type": "bytes storage ref",
                              "value": "publicKey"
                            },
                            "id": 10447,
                            "name": "Identifier",
                            "src": "2104:9:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10444,
                              "type": "bytes memory",
                              "value": "_publicKey"
                            },
                            "id": 10448,
                            "name": "Identifier",
                            "src": "2116:10:35"
                          }
                        ],
                        "id": 10449,
                        "name": "Assignment",
                        "src": "2104:22:35"
                      }
                    ],
                    "id": 10450,
                    "name": "ExpressionStatement",
                    "src": "2104:22:35"
                  }
                ],
                "id": 10451,
                "name": "Block",
                "src": "2094:39:35"
              }
            ],
            "id": 10452,
            "name": "FunctionDefinition",
            "src": "2040:93:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setSuccess",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_success",
                      "scope": 10462,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 10453,
                        "name": "ElementaryTypeName",
                        "src": "2159:4:35"
                      }
                    ],
                    "id": 10454,
                    "name": "VariableDeclaration",
                    "src": "2159:13:35"
                  }
                ],
                "id": 10455,
                "name": "ParameterList",
                "src": "2158:15:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10456,
                "name": "ParameterList",
                "src": "2181:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10319,
                              "type": "bool",
                              "value": "success"
                            },
                            "id": 10457,
                            "name": "Identifier",
                            "src": "2191:7:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10454,
                              "type": "bool",
                              "value": "_success"
                            },
                            "id": 10458,
                            "name": "Identifier",
                            "src": "2201:8:35"
                          }
                        ],
                        "id": 10459,
                        "name": "Assignment",
                        "src": "2191:18:35"
                      }
                    ],
                    "id": 10460,
                    "name": "ExpressionStatement",
                    "src": "2191:18:35"
                  }
                ],
                "id": 10461,
                "name": "Block",
                "src": "2181:35:35"
              }
            ],
            "id": 10462,
            "name": "FunctionDefinition",
            "src": "2139:77:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setBondAmount",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_bondAmount",
                      "scope": 10472,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10463,
                        "name": "ElementaryTypeName",
                        "src": "2245:7:35"
                      }
                    ],
                    "id": 10464,
                    "name": "VariableDeclaration",
                    "src": "2245:19:35"
                  }
                ],
                "id": 10465,
                "name": "ParameterList",
                "src": "2244:21:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10466,
                "name": "ParameterList",
                "src": "2273:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10322,
                              "type": "uint256",
                              "value": "bondAmount"
                            },
                            "id": 10467,
                            "name": "Identifier",
                            "src": "2283:10:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10464,
                              "type": "uint256",
                              "value": "_bondAmount"
                            },
                            "id": 10468,
                            "name": "Identifier",
                            "src": "2296:11:35"
                          }
                        ],
                        "id": 10469,
                        "name": "Assignment",
                        "src": "2283:24:35"
                      }
                    ],
                    "id": 10470,
                    "name": "ExpressionStatement",
                    "src": "2283:24:35"
                  }
                ],
                "id": 10471,
                "name": "Block",
                "src": "2273:41:35"
              }
            ],
            "id": 10472,
            "name": "FunctionDefinition",
            "src": "2222:92:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "burnContractBalance",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10473,
                "name": "ParameterList",
                "src": "2348:2:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10474,
                "name": "ParameterList",
                "src": "2358:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transfer",
                              "referencedDeclaration": null,
                              "type": "function (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 10475,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2368:7:35"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 10476,
                                    "name": "Literal",
                                    "src": "2376:1:35"
                                  }
                                ],
                                "id": 10477,
                                "name": "FunctionCall",
                                "src": "2368:10:35"
                              }
                            ],
                            "id": 10478,
                            "name": "MemberAccess",
                            "src": "2368:19:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "balance",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                          "typeString": "contract ECDSAKeepStub"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 10479,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2388:7:35"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18502,
                                      "type": "contract ECDSAKeepStub",
                                      "value": "this"
                                    },
                                    "id": 10480,
                                    "name": "Identifier",
                                    "src": "2396:4:35"
                                  }
                                ],
                                "id": 10481,
                                "name": "FunctionCall",
                                "src": "2388:13:35"
                              }
                            ],
                            "id": 10482,
                            "name": "MemberAccess",
                            "src": "2388:21:35"
                          }
                        ],
                        "id": 10483,
                        "name": "FunctionCall",
                        "src": "2368:42:35"
                      }
                    ],
                    "id": 10484,
                    "name": "ExpressionStatement",
                    "src": "2368:42:35"
                  }
                ],
                "id": 10485,
                "name": "Block",
                "src": "2358:59:35"
              }
            ],
            "id": 10486,
            "name": "FunctionDefinition",
            "src": "2320:97:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "pushFundsFromKeep",
              "scope": 10522,
              "stateMutability": "payable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_depositAddress",
                      "scope": 10507,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 10487,
                        "name": "ElementaryTypeName",
                        "src": "2450:15:35"
                      }
                    ],
                    "id": 10488,
                    "name": "VariableDeclaration",
                    "src": "2450:31:35"
                  }
                ],
                "id": 10489,
                "name": "ParameterList",
                "src": "2449:33:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10490,
                "name": "ParameterList",
                "src": "2498:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_446f53f2fdcb9682b5418770e7f05a91bd01b62cdb8267645af8e0d6c58f0b5f",
                                  "typeString": "literal_string \"value must be greater than 0\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 10491,
                            "name": "Identifier",
                            "src": "2508:7:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "value",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 10492,
                                    "name": "Identifier",
                                    "src": "2516:3:35"
                                  }
                                ],
                                "id": 10493,
                                "name": "MemberAccess",
                                "src": "2516:9:35"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 10494,
                                "name": "Literal",
                                "src": "2528:1:35"
                              }
                            ],
                            "id": 10495,
                            "name": "BinaryOperation",
                            "src": "2516:13:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "76616c7565206d7573742062652067726561746572207468616e2030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"value must be greater than 0\"",
                              "value": "value must be greater than 0"
                            },
                            "id": 10496,
                            "name": "Literal",
                            "src": "2531:30:35"
                          }
                        ],
                        "id": 10497,
                        "name": "FunctionCall",
                        "src": "2508:54:35"
                      }
                    ],
                    "id": 10498,
                    "name": "ExpressionStatement",
                    "src": "2508:54:35"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transfer",
                              "referencedDeclaration": null,
                              "type": "function (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10488,
                                  "type": "address payable",
                                  "value": "_depositAddress"
                                },
                                "id": 10499,
                                "name": "Identifier",
                                "src": "2572:15:35"
                              }
                            ],
                            "id": 10501,
                            "name": "MemberAccess",
                            "src": "2572:24:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "value",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 10502,
                                "name": "Identifier",
                                "src": "2597:3:35"
                              }
                            ],
                            "id": 10503,
                            "name": "MemberAccess",
                            "src": "2597:9:35"
                          }
                        ],
                        "id": 10504,
                        "name": "FunctionCall",
                        "src": "2572:35:35"
                      }
                    ],
                    "id": 10505,
                    "name": "ExpressionStatement",
                    "src": "2572:35:35"
                  }
                ],
                "id": 10506,
                "name": "Block",
                "src": "2498:116:35"
              }
            ],
            "id": 10507,
            "name": "FunctionDefinition",
            "src": "2423:191:35"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "drain",
              "scope": 10522,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10508,
                "name": "ParameterList",
                "src": "2634:2:35"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10509,
                "name": "ParameterList",
                "src": "2644:0:35"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transfer",
                              "referencedDeclaration": null,
                              "type": "function (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 10510,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2654:7:35"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 10511,
                                    "name": "Literal",
                                    "src": "2662:1:35"
                                  }
                                ],
                                "id": 10512,
                                "name": "FunctionCall",
                                "src": "2654:10:35"
                              }
                            ],
                            "id": 10513,
                            "name": "MemberAccess",
                            "src": "2654:19:35"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "balance",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ECDSAKeepStub_$10522",
                                          "typeString": "contract ECDSAKeepStub"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 10514,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2674:7:35"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18502,
                                      "type": "contract ECDSAKeepStub",
                                      "value": "this"
                                    },
                                    "id": 10515,
                                    "name": "Identifier",
                                    "src": "2682:4:35"
                                  }
                                ],
                                "id": 10516,
                                "name": "FunctionCall",
                                "src": "2674:13:35"
                              }
                            ],
                            "id": 10517,
                            "name": "MemberAccess",
                            "src": "2674:21:35"
                          }
                        ],
                        "id": 10518,
                        "name": "FunctionCall",
                        "src": "2654:42:35"
                      }
                    ],
                    "id": 10519,
                    "name": "ExpressionStatement",
                    "src": "2654:42:35"
                  }
                ],
                "id": 10520,
                "name": "Block",
                "src": "2644:59:35"
              }
            ],
            "id": 10521,
            "name": "FunctionDefinition",
            "src": "2620:83:35"
          }
        ],
        "id": 10522,
        "name": "ContractDefinition",
        "src": "335:2370:35"
      }
    ],
    "id": 10523,
    "name": "SourceUnit",
    "src": "0:2706:35"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T11:52:09.357Z",
  "devdoc": {
    "details": "This is a stub used in tests, so we don't have to call actual ECDSAKeep",
    "methods": {}
  },
  "userdoc": {
    "methods": {},
    "notice": "Implementation of ECDSAKeep interface used in tests only"
  }
}