{
  "contractName": "DepositFunding",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{\"initialize(DepositUtils.Deposit storage,uint64)\":{\"details\":\"If called directly, the transaction will revert since the call will      be executed on an already set-up instance.\",\"params\":{\"_d\":\"Deposit storage pointer.\",\"_lotSizeSatoshis\":\"Lot size in satoshis.\"}},\"notifyFundingTimedOut(DepositUtils.Deposit storage)\":{\"details\":\"This is considered a funder fault, and the funder's payment for      opening the deposit is not refunded. Reverts if the funding timeout      has not yet elapsed, or if the deposit is not currently awaiting      funding proof.\",\"params\":{\"_d\":\"Deposit storage pointer.\"}},\"notifySignerSetupFailed(DepositUtils.Deposit storage)\":{\"params\":{\"_d\":\"Deposit storage pointer.\"}},\"provideBTCFundingProof(DepositUtils.Deposit storage,bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)\":{\"details\":\"Takes a pre-parsed transaction and calculates values needed to verify funding.\",\"params\":{\"_bitcoinHeaders\":\"Single bytestring of 80-byte bitcoin headers, lowest height first.\",\"_d\":\"Deposit storage pointer.\",\"_fundingOutputIndex\":\"Index of funding output in _txOutputVector (0-indexed).\",\"_merkleProof\":\"The merkle proof of transaction inclusion in a block.\",\"_txIndexInBlock\":\"Transaction index in the block (0-indexed).\",\"_txInputVector\":\"All transaction inputs prepended by the number of inputs encoded as a VarInt, max 0xFC(252) inputs.\",\"_txLocktime\":\"Final 4 bytes of the transaction.\",\"_txOutputVector\":\"All transaction outputs prepended by the number of outputs encoded as a VarInt, max 0xFC(252) outputs.\",\"_txVersion\":\"Transaction version number (4-byte LE).\"}},\"provideFundingECDSAFraudProof(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)\":{\"details\":\"Calls out to the keep to verify if there was fraud.\",\"params\":{\"_d\":\"Deposit storage pointer.\",\"_preimage\":\"The sha256 preimage of the digest.\",\"_r\":\"Signature R value.\",\"_s\":\"Signature S value.\",\"_signedDigest\":\"The digest signed by the signature vrs tuple.\",\"_v\":\"Signature recovery value.\"},\"return\":\"True if successful, otherwise revert.\"},\"requestFunderAbort(DepositUtils.Deposit storage,bytes)\":{\"details\":\"This is a self-admitted funder fault, and should only be callable      by the TDT holder.\",\"params\":{\"_abortOutputScript\":\"The output script the funder wishes to request        a return of their UTXO to.\",\"_d\":\"Deposit storage pointer.\"}},\"retrieveSignerPubkey(DepositUtils.Deposit storage)\":{\"details\":\"We store the pubkey as 2 bytestrings, X and Y.\",\"params\":{\"_d\":\"Deposit storage pointer.\"},\"return\":\"True if successful, otherwise revert.\"}}},\"userdoc\":{\"methods\":{\"initialize(DepositUtils.Deposit storage,uint64)\":{\"notice\":\"Internally called function to set up a newly created Deposit         instance. This should not be called by developers, use         `DepositFactory.createDeposit` to create a new deposit.\"},\"notifyFundingTimedOut(DepositUtils.Deposit storage)\":{\"notice\":\"Anyone may notify the contract that the funder has failed to         prove that they have sent BTC in time.\"},\"notifySignerSetupFailed(DepositUtils.Deposit storage)\":{\"notice\":\"Anyone may notify the contract that signing group setup has timed out.\"},\"provideBTCFundingProof(DepositUtils.Deposit storage,bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)\":{\"notice\":\"Anyone may notify the deposit of a funding proof to activate the deposit.                             This is the happy-path of the funding flow. It means that we have succeeded.\"},\"provideFundingECDSAFraudProof(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)\":{\"notice\":\"Anyone can provide a signature that was not requested to prove fraud during funding.\"},\"requestFunderAbort(DepositUtils.Deposit storage,bytes)\":{\"notice\":\"Requests a funder abort for a failed-funding deposit; that is,         requests return of a sent UTXO to `_abortOutputScript`. This can         be used for example when a UTXO is sent that is the wrong size         for the lot. Must be called after setup fails for any reason,         and imposes no requirement or incentive on the signing group to         return the UTXO.\"},\"retrieveSignerPubkey(DepositUtils.Deposit storage)\":{\"notice\":\"we poll the Keep contract to retrieve our pubkey.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol\":\"DepositFunding\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol\":{\"keccak256\":\"0xd2422abaf64bf2d28f4c0548bc31c3d0e4c5f3e4414486c149b773bea0c9db0a\",\"urls\":[\"bzz-raw://c4b0e3caea108ce67da5922906753dc1a1f87cee923e7c32260239150f2152bb\",\"dweb:/ipfs/QmcHcftf4M6ZyuFG725QiFGHuAtz6zDQZ9HCEaoP5Wb6Fd\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol\":{\"keccak256\":\"0xe223f4e039e347d3eec8eea8d30d6f87f25ab3f8839e96b5da608c6a012db2c2\",\"urls\":[\"bzz-raw://48435948a4b232a3c610f7ac51e5c87a27aa10f92775bc95cd2068dd07b69a70\",\"dweb:/ipfs/Qmd7PeN1uovU8BqyrPuLkKf4U1DENt9S7hFr6G5cXFamim\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol\":{\"keccak256\":\"0x6ec98705ac0cfc20f2e94069ba88c74816c40283c47b3086cf619b69d8a15379\",\"urls\":[\"bzz-raw://981e7e1ababfe4bb7bb35251679f59d188348c416af29822794011a0e48f2cd3\",\"dweb:/ipfs/QmTpPQCYP3qzKdcMBLBZGRSM2X6rgR1CZmYDQ7SHP4pjrb\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol\":{\"keccak256\":\"0x0b407fe4cfa56771c7cb0280e58c23e6c79089bb0f39ec9af83855103cfadce0\",\"urls\":[\"bzz-raw://b06c9ff8c10125cd7dcee7167fd081c95248c97c699a4dfc92bf65d68774f5f1\",\"dweb:/ipfs/QmcdTkj1XtJcPhF9pxr56xV4DW3SxGaaiE5PeGxbYVoHL3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol\":{\"keccak256\":\"0xc18e532fc384f45567abcf7fbe7bccb885308d63ffeed41d9cf845573a289b98\",\"urls\":[\"bzz-raw://7250e8fce13326313e64d2f24e093bd51c9fdba939b8370f64a1fe820814275b\",\"dweb:/ipfs/QmVfX5w4xN6gxoqbdgPeeTbBvFtxxaNYWSknSY7JDtve2b\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol\":{\"keccak256\":\"0x8bddca84b4106ea5d865b5e19c0d49f3dc94a7e614c7403ae05074eda01d6ee9\",\"urls\":[\"bzz-raw://65b05f6e04ae46a16194db335ad21dd806d0b07ad571a126b6981896890c8a4c\",\"dweb:/ipfs/QmTF4RgELhXX7pooNKwW8qNY7Sr7dFY7vfueApjTMa99jt\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol\":{\"keccak256\":\"0xd8530ab1baddbdfbba6c1b03e547375afe79493b9948d645f94fc0da12ec953b\",\"urls\":[\"bzz-raw://713285a0a4d865a37f3770ce848c20f7277e1540c0a8aa43c2ae0966a7c3df9a\",\"dweb:/ipfs/QmaPiXxvySt9UDmQtVGidh8TQ4XJdxY2X61rEBd8346ELi\"]},\"/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/DepositFactoryAuthority.sol\":{\"keccak256\":\"0xd8e81ec58dea6a6bcc554e8c7e6c58898ab11a410c3f61224330cbe833992add\",\"urls\":[\"bzz-raw://9d2b23cf1e2f98eb77acf6ae62933e48494113e1d6091146459fd79a635f1dcf\",\"dweb:/ipfs/QmPK3nTmcrScDavDSXGHvonhfik3BJ55qhwSnUmhzL5QUE\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol\":{\"keccak256\":\"0x3d9980b4b18be7e69364b93581d86d08dd2c66fc76b2f9f0af0b4911dc648318\",\"urls\":[\"bzz-raw://751dae1cd68c285a22b513d515074eb6704e11e00ba8196f360d47dc8551dd86\",\"dweb:/ipfs/QmRe5u8bjSd2CMvjgWMzpeea3VdcqEGwAP91zvjxgur8o8\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol\":{\"keccak256\":\"0x74833fb25cf9f24716d563c8fad0fd6172d03577dc85ab4271ca4754285ee915\",\"urls\":[\"bzz-raw://62d37b71546ea52f0c86170b588b021a488785e8570f904f0d2bcfecee93f6a7\",\"dweb:/ipfs/QmePuD631VYpEproKbap8cPXmWeb5mYjU6bwEWnxKCVWbz\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol\":{\"keccak256\":\"0xd9238bbd83f5352706426103a0708ad7c00ffbd90340a4b3bab03d2c5371e48b\",\"urls\":[\"bzz-raw://f1fc94f00aeabd49bd0f8ecf372213e83c949454c28fa672a46dd12d9a0b4311\",\"dweb:/ipfs/QmaCzqi2g4GSvzHDDES61FauDmdTGGyZrCkK1BdxpMqYa3\"]},\"/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\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\":{\"keccak256\":\"0x8f1edc0a2dfb4d167d190989ebc1c4256664e50ec1f82dfaeb25fa5d4a76a35a\",\"urls\":[\"bzz-raw://e815868907cc082fee1e3964be7de12da2161863d68dd1532a74e3a97bacf533\",\"dweb:/ipfs/Qmd8DqutKSwxh38WWA1ydftNkiAxSD9sqxa7qf1asHKA8c\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\":{\"keccak256\":\"0x461cc52e40ba53e646f5c9505b992baa3d5b3c98ae5718561e61b3bc6c726d52\",\"urls\":[\"bzz-raw://90cf2e608b660671642a616ec044e2a39e8ceb7079315b6133ec978c47af9f98\",\"dweb:/ipfs/QmX4hyYS99RYWiQ7BwLXuvQpU5x62YbjJWLgYFwrPkYbzT\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\":{\"keccak256\":\"0x43451fdb4c4d55c01122411a4cf89a5c544c2bd4b646ee1d1f306626275324bf\",\"urls\":[\"bzz-raw://db93f07c32fa294d416aaab1b19a205772f2a3fa573fd380e5641e7770193ccf\",\"dweb:/ipfs/QmVE4y8cFKWZGKEfTM9Q3YreAArpMTTALHNr2tcvcNDnbi\"]},\"@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol\":{\"keccak256\":\"0x22d34c04c68c2a77ee83e2ef3756f6e6bad6ad675560d777e612315d7eb83935\",\"urls\":[\"bzz-raw://b642c61be1d34e153e4f9cc139291fa26f4ecf31a3acc5b960aad20f4f689eeb\",\"dweb:/ipfs/QmWADdVTCSyvtgb76AxFFkAr9h9jbY57Mj5X6xiEqCqmMu\"]},\"@summa-tx/bitcoin-spv-sol/contracts/ValidateSPV.sol\":{\"keccak256\":\"0x9af3b3f36de63e95977f09548617989e391b3c511cf0383ee35cefd5da7d3bfd\",\"urls\":[\"bzz-raw://97ce025c7d18540e4c24578db61cc5e33828be8e9a82b5cb5f46c99212f75ed1\",\"dweb:/ipfs/QmRrdWnd95rgCZzeaNiU4KUcGe1j7oDBj7LatpXhUmjbEE\"]},\"openzeppelin-solidity/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzz-raw://072e8b5a1b5acfc2acba9b6fb87d1dc57065aad44572617ad46b014074969eb3\",\"dweb:/ipfs/QmVTDHUriaxBJqiWCWgWC8vYaYYfXSz883LsowzTx1DcpK\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzz-raw://8bdbefb642e7b08535c66bbf074e576cfef2300cdf910c1e0b211f6393833a28\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzz-raw://b40442c5b350b57b88a081a1eacd2bac962d4ecc1f029f5447a18986f08f6f14\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"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\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf151df411bbf4eaef1fc8e8480cd10c2cd985f1a36517e63981517610213efc1\",\"urls\":[\"bzz-raw://2a277b3cc3a1a03af5c039bc75cd16bb2d23b529cb2564cc0bea1b1e0eb4dd68\",\"dweb:/ipfs/QmNRxggY8qmjjuLnxggRqE8uBueuCktLwi9YYHagWoaEJ8\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol\":{\"keccak256\":\"0xe5e28b1a405164faa98f8ecd8ed2b00907b89e3d58b2b2bb8ac8b12bc5714489\",\"urls\":[\"bzz-raw://0d5d3f0caa7e7ec91f8a2894e1a6a3513a0c79aa91a498ebf8fdbdd07c12286f\",\"dweb:/ipfs/QmP7r4jQMRxXb5JHy5V9bgMz5FmTezcSDd7ivyzJN88pTR\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xce48937a8007c580b8e2e35705738c922dd17540de89ebee6df06d2917a3f9fc\",\"urls\":[\"bzz-raw://1d117265103ee3efcd454d3aafb3e79a115f9bca6dec78a1229558eb30d14d05\",\"dweb:/ipfs/QmTm5Z1c7zzPiG3Cfj1eBMB23AeiEFGgvmTFQVaeEWXVCw\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0x2b2b99dc7fe8fcd1f9427d00822b99cbc683dc21f5dd7532bd7e2281fd2c2ca2\",\"urls\":[\"bzz-raw://a8024c00e34efaf328f9592e76823c79f25fa0f6006bdf4a1e7fea204afd4773\",\"dweb:/ipfs/QmZns9jTr7843njq3J2iL2LLoWXK5mdzN1bDGd9GL3ahhD\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzz-raw://90dceab42713246639100b87d6650037d68e4a2ab2dd4b5768c3ed35d6b3a4a0\",\"dweb:/ipfs/QmQ42UW5nchMoYP9bU9F1AJga5chG8j92fCPkURpiDKsCu\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
  "bytecode": "0x61283e610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c806361f036d31161006557806361f036d3146101aa578063bb21d024146101d4578063d7455193146101fe578063fb12d9df1461047657610087565b80632851e9dd1461008c578063426e16c1146100c85780635f3c5d89146100f2575b600080fd5b81801561009857600080fd5b506100c6600480360360408110156100af57600080fd5b508035906020013567ffffffffffffffff16610549565b005b8180156100d457600080fd5b506100c6600480360360208110156100eb57600080fd5b5035610c8b565b8180156100fe57600080fd5b506100c66004803603604081101561011557600080fd5b81359190810190604081016020820135600160201b81111561013657600080fd5b82018360208201111561014857600080fd5b803590602001918460018302840111600160201b8311171561016957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f17945050505050565b8180156101b657600080fd5b506100c6600480360360208110156101cd57600080fd5b5035611089565b8180156101e057600080fd5b506100c6600480360360208110156101f757600080fd5b50356113be565b81801561020a57600080fd5b506100c6600480360361012081101561022257600080fd5b8135916001600160e01b031960208201351691810190606081016040820135600160201b81111561025257600080fd5b82018360208201111561026457600080fd5b803590602001918460018302840111600160201b8311171561028557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156102d757600080fd5b8201836020820111156102e957600080fd5b803590602001918460018302840111600160201b8311171561030a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b81111561037557600080fd5b82018360208201111561038757600080fd5b803590602001918460018302840111600160201b831117156103a857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561040257600080fd5b82018360208201111561041457600080fd5b803590602001918460018302840111600160201b8311171561043557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611761945050505050565b81801561048257600080fd5b506100c6600480360360c081101561049957600080fd5b81359160ff602082013516916040820135916060810135916080820135919081019060c0810160a0820135600160201b8111156104d557600080fd5b8201836020820111156104e757600080fd5b803590602001918460018302840111600160201b8311171561050857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d7d945050505050565b81546040805163035fac7160e21b815290516001600160a01b0390921691630d7eb1c491600480820192602092909190829003018186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d60208110156105b757600080fd5b505161060a576040805162461bcd60e51b815260206004820152601c60248201527f4e6577206465706f73697473206172656e277420616c6c6f7765642e00000000604482015290519081900360640190fd5b8173__DepositStates_________________________63652d343090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561065b57600080fd5b505af415801561066f573d6000803e3d6000fd5b505050506040513d602081101561068557600080fd5b50516106d8576040805162461bcd60e51b815260206004820152601f60248201527f4465706f73697420736574757020616c72656164792072657175657374656400604482015290519081900360640190fd5b6004828101805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff85160217905582546040805163168078f760e11b815290516001600160a01b0390921692632d00f1ee928282019260209290829003018186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d602081101561076b57600080fd5b5051600683015581546040805163d565d1f160e01b815290516001600160a01b03909216916382f91968913491859173__TBTCConstants_________________________9163d565d1f191600480820192602092909190829003018186803b1580156107d657600080fd5b505af41580156107ea573d6000803e3d6000fd5b505050506040513d602081101561080057600080fd5b5051604080516001600160e01b031960e087901b16815267ffffffffffffffff9093166004840152602483019190915251604480830192602092919082900301818588803b15801561085157600080fd5b505af1158015610865573d6000803e3d6000fd5b50505050506040513d602081101561087c57600080fd5b5051600a830180546001600160a01b0319166001600160a01b039092169190911790556006820154604080516317d6404560e11b815260048101859052905173__DepositUtils__________________________91632fac808a916024808301926020929190829003018186803b1580156108f657600080fd5b505af415801561090a573d6000803e3d6000fd5b505050506040513d602081101561092057600080fd5b5051101561095f5760405162461bcd60e51b815260040180806020018281038252602c8152602001806127af602c913960400191505060405180910390fd5b8154604080516360e98d5960e01b815290516001600160a01b03909216916360e98d5991600480820192602092909190829003018186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d60208110156109cd57600080fd5b50516004808401805461ffff909316600160e81b0261ffff60e81b1990931692909217909155825460408051635166baed60e11b815290516001600160a01b039092169263a2cd75da928282019260209290829003018186803b158015610a3357600080fd5b505afa158015610a47573d6000803e3d6000fd5b505050506040513d6020811015610a5d57600080fd5b505160058301805461ffff909216620100000263ffff0000199092169190911790558154604080516337a7f7b160e11b815290516001600160a01b0390921691636f4fef6291600480820192602092909190829003018186803b158015610ac357600080fd5b505afa158015610ad7573d6000803e3d6000fd5b505050506040513d6020811015610aed57600080fd5b505160058301805461ffff909216600160201b0265ffff000000001990921691909117905581546040805163987ecea760e01b815290516001600160a01b039092169163987ecea791600481810192602092909190829003018186803b158015610b5657600080fd5b505afa158015610b6a573d6000803e3d6000fd5b505050506040513d6020811015610b8057600080fd5b505160058301805461ffff191661ffff90921691909117905542600b83015560408051630b66efa760e11b815260048101849052905173__DepositStates_________________________916316cddf4e916024808301926000929190829003018186803b158015610bf157600080fd5b505af4158015610c05573d6000803e3d6000fd5b50505050600a8201546040805163425e075160e01b8152600481018590526001600160a01b0390921660248301525173__OutsourceDepositLogging_______________9163425e0751916044808301926000929190829003018186803b158015610c6f57600080fd5b505af4158015610c83573d6000803e3d6000fd5b505050505050565b8073__DepositStates_________________________6327f2744990916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cdc57600080fd5b505af4158015610cf0573d6000803e3d6000fd5b505050506040513d6020811015610d0657600080fd5b5051610d59576040805162461bcd60e51b815260206004820152601f60248201527f46756e64696e672074696d656f757420686173206e6f74207374617274656400604482015290519081900360640190fd5b610ddd73__TBTCConstants_________________________6338c860936040518163ffffffff1660e01b815260040160206040518083038186803b158015610da057600080fd5b505af4158015610db4573d6000803e3d6000fd5b505050506040513d6020811015610dca57600080fd5b5051600c8301549063ffffffff61211616565b4211610e30576040805162461bcd60e51b815260206004820181905260248201527f46756e64696e672074696d656f757420686173206e6f7420656c61707365642e604482015290519081900360640190fd5b8073__DepositStates_________________________636fdbb3c490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610e8157600080fd5b505af4158015610e95573d6000803e3d6000fd5b505050508073__OutsourceDepositLogging_______________63cebb22f590916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610eea57600080fd5b505af4158015610efe573d6000803e3d6000fd5b50505050610f0b81612177565b610f14816121d4565b50565b8173__DepositStates_________________________63b65fb6cb90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f6857600080fd5b505af4158015610f7c573d6000803e3d6000fd5b505050506040513d6020811015610f9257600080fd5b5051610fcf5760405162461bcd60e51b81526004018080602001828103825260228152602001806126fd6022913960400191505060405180910390fd5b604080516304aaf9cd60e31b8152600481018481526024820192835283516044830152835173__OutsourceDepositLogging_______________93632557ce68938793879390929160640190602085019080838360005b8381101561103e578181015183820152602001611026565b50505050905090810190601f16801561106b5780820380516001836020036101000a031916815260200191505b50935050505060006040518083038186803b158015610c6f57600080fd5b8073__DepositStates_________________________63b5e6a0a090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156110da57600080fd5b505af41580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b505161114c576040805162461bcd60e51b815260206004820152601260248201527104e6f74206177616974696e672073657475760741b604482015290519081900360640190fd5b6111d073__TBTCConstants_________________________63c342b1f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561119357600080fd5b505af41580156111a7573d6000803e3d6000fd5b505050506040513d60208110156111bd57600080fd5b5051600b8301549063ffffffff61211616565b421161120d5760405162461bcd60e51b815260040180806020018281038252602f8152602001806127db602f913960400191505060405180910390fd5b6000611218826121e5565b9050816006015481106112df576112b88273__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561127957600080fd5b505af415801561128d573d6000803e3d6000fd5b505050506040513d60208110156112a357600080fd5b5051600684015484919063ffffffff6122bb16565b6112df6112d283600601548361230790919063ffffffff16565b839063ffffffff61236416565b8173__DepositStates_________________________636fdbb3c490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561133057600080fd5b505af4158015611344573d6000803e3d6000fd5b505050508173__OutsourceDepositLogging_______________63cebb22f590916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561139957600080fd5b505af41580156113ad573d6000803e3d6000fd5b505050506113ba826121d4565b5050565b8073__DepositStates_________________________63b5e6a0a090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561140f57600080fd5b505af4158015611423573d6000803e3d6000fd5b505050506040513d602081101561143957600080fd5b50516114765760405162461bcd60e51b815260040180806020018281038252602381526020018061278c6023913960400191505060405180910390fd5b600a81015460408051631719a22960e11b815290516060926001600160a01b031691632e334452916004808301926000929190829003018186803b1580156114bd57600080fd5b505afa1580156114d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156114fa57600080fd5b8101908080516040519392919084600160201b82111561151957600080fd5b90830190602082018581111561152e57600080fd5b8251600160201b81118282018810171561154757600080fd5b82525081516020918201929091019080838360005b8381101561157457818101518382015260200161155c565b50505050905090810190601f1680156115a15780820380516001836020036101000a031916815260200191505b50604052505050905080516040146115ea5760405162461bcd60e51b815260040180806020018281038252602781526020018061271f6027913960400191505060405180910390fd5b611605611600826000602063ffffffff61242916565b6124e3565b600d83015561161f6116008260208063ffffffff61242916565b600e8301819055158015906116375750600d82015415155b611688576040805162461bcd60e51b815260206004820152601860248201527f4b6565702072657475726e656420626164207075626b65790000000000000000604482015290519081900360640190fd5b42600c83015560408051638be5e97f60e01b815260048101849052905173__DepositStates_________________________91638be5e97f916024808301926000929190829003018186803b1580156116e057600080fd5b505af41580156116f4573d6000803e3d6000fd5b505050508173__OutsourceDepositLogging_______________634a799278909184600d015485600e01546040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060006040518083038186803b158015610c6f57600080fd5b8873__DepositStates_________________________6327f2744990916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156117b257600080fd5b505af41580156117c6573d6000803e3d6000fd5b505050506040513d60208110156117dc57600080fd5b5051611826576040805162461bcd60e51b81526020600482015260146024820152734e6f74206177616974696e672066756e64696e6760601b604482015290519081900360640190fd5b600060608a73__DepositUtils__________________________63e92d811990918c8c8c8c8c8c8c8c6040518a63ffffffff1660e01b8152600401808a8152602001896001600160e01b0319166001600160e01b03191681526020018060200180602001886001600160e01b0319166001600160e01b03191681526020018760ff1660ff168152602001806020018681526020018060200185810385528c818151815260200191508051906020019080838360005b838110156118f35781810151838201526020016118db565b50505050905090810190601f1680156119205780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b8381101561195357818101518382015260200161193b565b50505050905090810190601f1680156119805780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b838110156119b357818101518382015260200161199b565b50505050905090810190601f1680156119e05780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015611a135781810151838201526020016119fb565b50505050905090810190601f168015611a405780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060006040518083038186803b158015611a6857600080fd5b505af4158015611a7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611aa557600080fd5b815160208301805160405192949293830192919084600160201b821115611acb57600080fd5b908301906020820185811115611ae057600080fd5b8251600160201b811182820188101715611af957600080fd5b82525081516020918201929091019080838360005b83811015611b26578181015183820152602001611b0e565b50505050905090810190601f168015611b535780820380516001836020036101000a031916815260200191505b5060405250505060158d01805467ffffffffffffffff191660c084901c17905580519193509150611b8d9060178d01906020840190612661565b50428b601601819055506000611c8a8b8b8b8b60405160200180856001600160e01b0319166001600160e01b031916815260040184805190602001908083835b60208310611bec5780518252601f199092019160209182019101611bcd565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b60208310611c345780518252601f199092019160209182019101611c15565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160e01b0319166001600160e01b03191681526004019450505050506040516020818303038152906040526124ff565b9050611c958c6121d4565b8b73__DepositStates_________________________63375ec42090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611ce657600080fd5b505af4158015611cfa573d6000803e3d6000fd5b505050508b73__OutsourceDepositLogging_______________63c50857849091836040518363ffffffff1660e01b8152600401808381526020018281526020019250505060006040518083038186803b158015611d5757600080fd5b505af4158015611d6b573d6000803e3d6000fd5b50505050505050505050505050505050565b8573__DepositStates_________________________6327f2744990916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611dce57600080fd5b505af4158015611de2573d6000803e3d6000fd5b505050506040513d6020811015611df857600080fd5b5051611e355760405162461bcd60e51b81526004018080602001828103825260468152602001806127466046913960600191505060405180910390fd5b8573__DepositLiquidation____________________630427cacd909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ec7578181015183820152602001611eaf565b50505050905090810190601f168015611ef45780820380516001836020036101000a031916815260200191505b5097505050505050505060006040518083038186803b158015611f1657600080fd5b505af4158015611f2a573d6000803e3d6000fd5b505050508573__OutsourceDepositLogging_______________6309d65d2490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611f7f57600080fd5b505af4158015611f93573d6000803e3d6000fd5b505050506000611fa2876121e5565b90506120328773__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611ff857600080fd5b505af415801561200c573d6000803e3d6000fd5b505050506040513d602081101561202257600080fd5b505188908363ffffffff6122bb16565b61203b87612630565b8673__DepositStates_________________________636fdbb3c490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561208c57600080fd5b505af41580156120a0573d6000803e3d6000fd5b505050508673__OutsourceDepositLogging_______________63cebb22f590916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156120f557600080fd5b505af4158015612109573d6000803e3d6000fd5b5050505050505050505050565b600082820183811015612170576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600a8101546040805163a15c3bbb60e01b815290516001600160a01b0390921691829163a15c3bbb91600480830192600092919082900301818387803b1580156121c057600080fd5b505af1158015610c83573d6000803e3d6000fd5b6000600b8201819055600c90910155565b600a810154604080516307acd5cb60e01b8152905160009247926001600160a01b039091169182916307acd5cb916004808301928892919082900301818387803b15801561223257600080fd5b505af1158015612246573d6000803e3d6000fd5b5047925050508281116122a0576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2066756e64732072656365697665642c20756e6578706563746564000000604482015290519081900360640190fd5b6122b0818463ffffffff61230716565b93505050505b919050565b6001600160a01b03821660009081526018840160205260409020546122e6908263ffffffff61211616565b6001600160a01b039092166000908152601890930160205250604090912055565b60008282111561235e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b804710156123b9576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320746f2073656e640000000000000000604482015290519081900360640190fd5b80156113ba57600a82015460408051631bb457e560e21b815290516001600160a01b03909216918291636ed15f9491859160048082019260009290919082900301818588803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050505050505050565b6060816124455750604080516020810190915260008152612170565b8282018381118015612458575080855110155b61249f576040805162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015290519081900360640190fd5b604051915082604083010160405282825283850182038460208701018481015b808210156124d8578151838301526020820191506124bf565b505050509392505050565b60008151600014156124f7575060006122b6565b506020015190565b6000600280836040518082805190602001908083835b602083106125345780518252601f199092019160209182019101612515565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612573573d6000803e3d6000fd5b5050506040513d602081101561258857600080fd5b50516040805160208181019390935281518082038401815290820191829052805190928291908401908083835b602083106125d45780518252601f1990920191602091820191016125b5565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612613573d6000803e3d6000fd5b5050506040513d602081101561262857600080fd5b505192915050565b600a810180546001600160a01b03191690556000600b8201819055600c8201819055600d8201819055600e90910155565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106126a257805160ff19168380011785556126cf565b828001600101855582156126cf579182015b828111156126cf5782518255916020019190600101906126b4565b506126db9291506126df565b5090565b6126f991905b808211156126db57600081556001016126e5565b9056fe546865206465706f73697420686173206e6f74206661696c65642066756e64696e677075626c6963206b6579206e6f7420736574206f72206e6f742036342d6279746573206c6f6e675369676e657220667261756420647572696e672066756e64696e6720666c6f77206f6e6c7920617661696c61626c65207768696c65206177616974696e672066756e64696e674e6f742063757272656e746c79206177616974696e67207369676e6572207365747570496e73756666696369656e74207369676e657220626f6e647320746f20636f766572207365747570206665655369676e696e672067726f757020666f726d6174696f6e2074696d656f7574206e6f742079657420656c6170736564a265627a7a72315820b4ecca246673ad2b907cc63c0f0eb8c3a4f764fc9e7497f23b99743566baf33f64736f6c63430005110032",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c806361f036d31161006557806361f036d3146101aa578063bb21d024146101d4578063d7455193146101fe578063fb12d9df1461047657610087565b80632851e9dd1461008c578063426e16c1146100c85780635f3c5d89146100f2575b600080fd5b81801561009857600080fd5b506100c6600480360360408110156100af57600080fd5b508035906020013567ffffffffffffffff16610549565b005b8180156100d457600080fd5b506100c6600480360360208110156100eb57600080fd5b5035610c8b565b8180156100fe57600080fd5b506100c66004803603604081101561011557600080fd5b81359190810190604081016020820135600160201b81111561013657600080fd5b82018360208201111561014857600080fd5b803590602001918460018302840111600160201b8311171561016957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f17945050505050565b8180156101b657600080fd5b506100c6600480360360208110156101cd57600080fd5b5035611089565b8180156101e057600080fd5b506100c6600480360360208110156101f757600080fd5b50356113be565b81801561020a57600080fd5b506100c6600480360361012081101561022257600080fd5b8135916001600160e01b031960208201351691810190606081016040820135600160201b81111561025257600080fd5b82018360208201111561026457600080fd5b803590602001918460018302840111600160201b8311171561028557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156102d757600080fd5b8201836020820111156102e957600080fd5b803590602001918460018302840111600160201b8311171561030a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160e01b03198535169560ff60208701351695919450925060608101915060400135600160201b81111561037557600080fd5b82018360208201111561038757600080fd5b803590602001918460018302840111600160201b831117156103a857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561040257600080fd5b82018360208201111561041457600080fd5b803590602001918460018302840111600160201b8311171561043557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611761945050505050565b81801561048257600080fd5b506100c6600480360360c081101561049957600080fd5b81359160ff602082013516916040820135916060810135916080820135919081019060c0810160a0820135600160201b8111156104d557600080fd5b8201836020820111156104e757600080fd5b803590602001918460018302840111600160201b8311171561050857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d7d945050505050565b81546040805163035fac7160e21b815290516001600160a01b0390921691630d7eb1c491600480820192602092909190829003018186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d60208110156105b757600080fd5b505161060a576040805162461bcd60e51b815260206004820152601c60248201527f4e6577206465706f73697473206172656e277420616c6c6f7765642e00000000604482015290519081900360640190fd5b8173__DepositStates_________________________63652d343090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561065b57600080fd5b505af415801561066f573d6000803e3d6000fd5b505050506040513d602081101561068557600080fd5b50516106d8576040805162461bcd60e51b815260206004820152601f60248201527f4465706f73697420736574757020616c72656164792072657175657374656400604482015290519081900360640190fd5b6004828101805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff85160217905582546040805163168078f760e11b815290516001600160a01b0390921692632d00f1ee928282019260209290829003018186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d602081101561076b57600080fd5b5051600683015581546040805163d565d1f160e01b815290516001600160a01b03909216916382f91968913491859173__TBTCConstants_________________________9163d565d1f191600480820192602092909190829003018186803b1580156107d657600080fd5b505af41580156107ea573d6000803e3d6000fd5b505050506040513d602081101561080057600080fd5b5051604080516001600160e01b031960e087901b16815267ffffffffffffffff9093166004840152602483019190915251604480830192602092919082900301818588803b15801561085157600080fd5b505af1158015610865573d6000803e3d6000fd5b50505050506040513d602081101561087c57600080fd5b5051600a830180546001600160a01b0319166001600160a01b039092169190911790556006820154604080516317d6404560e11b815260048101859052905173__DepositUtils__________________________91632fac808a916024808301926020929190829003018186803b1580156108f657600080fd5b505af415801561090a573d6000803e3d6000fd5b505050506040513d602081101561092057600080fd5b5051101561095f5760405162461bcd60e51b815260040180806020018281038252602c8152602001806127af602c913960400191505060405180910390fd5b8154604080516360e98d5960e01b815290516001600160a01b03909216916360e98d5991600480820192602092909190829003018186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d60208110156109cd57600080fd5b50516004808401805461ffff909316600160e81b0261ffff60e81b1990931692909217909155825460408051635166baed60e11b815290516001600160a01b039092169263a2cd75da928282019260209290829003018186803b158015610a3357600080fd5b505afa158015610a47573d6000803e3d6000fd5b505050506040513d6020811015610a5d57600080fd5b505160058301805461ffff909216620100000263ffff0000199092169190911790558154604080516337a7f7b160e11b815290516001600160a01b0390921691636f4fef6291600480820192602092909190829003018186803b158015610ac357600080fd5b505afa158015610ad7573d6000803e3d6000fd5b505050506040513d6020811015610aed57600080fd5b505160058301805461ffff909216600160201b0265ffff000000001990921691909117905581546040805163987ecea760e01b815290516001600160a01b039092169163987ecea791600481810192602092909190829003018186803b158015610b5657600080fd5b505afa158015610b6a573d6000803e3d6000fd5b505050506040513d6020811015610b8057600080fd5b505160058301805461ffff191661ffff90921691909117905542600b83015560408051630b66efa760e11b815260048101849052905173__DepositStates_________________________916316cddf4e916024808301926000929190829003018186803b158015610bf157600080fd5b505af4158015610c05573d6000803e3d6000fd5b50505050600a8201546040805163425e075160e01b8152600481018590526001600160a01b0390921660248301525173__OutsourceDepositLogging_______________9163425e0751916044808301926000929190829003018186803b158015610c6f57600080fd5b505af4158015610c83573d6000803e3d6000fd5b505050505050565b8073__DepositStates_________________________6327f2744990916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610cdc57600080fd5b505af4158015610cf0573d6000803e3d6000fd5b505050506040513d6020811015610d0657600080fd5b5051610d59576040805162461bcd60e51b815260206004820152601f60248201527f46756e64696e672074696d656f757420686173206e6f74207374617274656400604482015290519081900360640190fd5b610ddd73__TBTCConstants_________________________6338c860936040518163ffffffff1660e01b815260040160206040518083038186803b158015610da057600080fd5b505af4158015610db4573d6000803e3d6000fd5b505050506040513d6020811015610dca57600080fd5b5051600c8301549063ffffffff61211616565b4211610e30576040805162461bcd60e51b815260206004820181905260248201527f46756e64696e672074696d656f757420686173206e6f7420656c61707365642e604482015290519081900360640190fd5b8073__DepositStates_________________________636fdbb3c490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610e8157600080fd5b505af4158015610e95573d6000803e3d6000fd5b505050508073__OutsourceDepositLogging_______________63cebb22f590916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610eea57600080fd5b505af4158015610efe573d6000803e3d6000fd5b50505050610f0b81612177565b610f14816121d4565b50565b8173__DepositStates_________________________63b65fb6cb90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f6857600080fd5b505af4158015610f7c573d6000803e3d6000fd5b505050506040513d6020811015610f9257600080fd5b5051610fcf5760405162461bcd60e51b81526004018080602001828103825260228152602001806126fd6022913960400191505060405180910390fd5b604080516304aaf9cd60e31b8152600481018481526024820192835283516044830152835173__OutsourceDepositLogging_______________93632557ce68938793879390929160640190602085019080838360005b8381101561103e578181015183820152602001611026565b50505050905090810190601f16801561106b5780820380516001836020036101000a031916815260200191505b50935050505060006040518083038186803b158015610c6f57600080fd5b8073__DepositStates_________________________63b5e6a0a090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156110da57600080fd5b505af41580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b505161114c576040805162461bcd60e51b815260206004820152601260248201527104e6f74206177616974696e672073657475760741b604482015290519081900360640190fd5b6111d073__TBTCConstants_________________________63c342b1f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561119357600080fd5b505af41580156111a7573d6000803e3d6000fd5b505050506040513d60208110156111bd57600080fd5b5051600b8301549063ffffffff61211616565b421161120d5760405162461bcd60e51b815260040180806020018281038252602f8152602001806127db602f913960400191505060405180910390fd5b6000611218826121e5565b9050816006015481106112df576112b88273__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561127957600080fd5b505af415801561128d573d6000803e3d6000fd5b505050506040513d60208110156112a357600080fd5b5051600684015484919063ffffffff6122bb16565b6112df6112d283600601548361230790919063ffffffff16565b839063ffffffff61236416565b8173__DepositStates_________________________636fdbb3c490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561133057600080fd5b505af4158015611344573d6000803e3d6000fd5b505050508173__OutsourceDepositLogging_______________63cebb22f590916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561139957600080fd5b505af41580156113ad573d6000803e3d6000fd5b505050506113ba826121d4565b5050565b8073__DepositStates_________________________63b5e6a0a090916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561140f57600080fd5b505af4158015611423573d6000803e3d6000fd5b505050506040513d602081101561143957600080fd5b50516114765760405162461bcd60e51b815260040180806020018281038252602381526020018061278c6023913960400191505060405180910390fd5b600a81015460408051631719a22960e11b815290516060926001600160a01b031691632e334452916004808301926000929190829003018186803b1580156114bd57600080fd5b505afa1580156114d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156114fa57600080fd5b8101908080516040519392919084600160201b82111561151957600080fd5b90830190602082018581111561152e57600080fd5b8251600160201b81118282018810171561154757600080fd5b82525081516020918201929091019080838360005b8381101561157457818101518382015260200161155c565b50505050905090810190601f1680156115a15780820380516001836020036101000a031916815260200191505b50604052505050905080516040146115ea5760405162461bcd60e51b815260040180806020018281038252602781526020018061271f6027913960400191505060405180910390fd5b611605611600826000602063ffffffff61242916565b6124e3565b600d83015561161f6116008260208063ffffffff61242916565b600e8301819055158015906116375750600d82015415155b611688576040805162461bcd60e51b815260206004820152601860248201527f4b6565702072657475726e656420626164207075626b65790000000000000000604482015290519081900360640190fd5b42600c83015560408051638be5e97f60e01b815260048101849052905173__DepositStates_________________________91638be5e97f916024808301926000929190829003018186803b1580156116e057600080fd5b505af41580156116f4573d6000803e3d6000fd5b505050508173__OutsourceDepositLogging_______________634a799278909184600d015485600e01546040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060006040518083038186803b158015610c6f57600080fd5b8873__DepositStates_________________________6327f2744990916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156117b257600080fd5b505af41580156117c6573d6000803e3d6000fd5b505050506040513d60208110156117dc57600080fd5b5051611826576040805162461bcd60e51b81526020600482015260146024820152734e6f74206177616974696e672066756e64696e6760601b604482015290519081900360640190fd5b600060608a73__DepositUtils__________________________63e92d811990918c8c8c8c8c8c8c8c6040518a63ffffffff1660e01b8152600401808a8152602001896001600160e01b0319166001600160e01b03191681526020018060200180602001886001600160e01b0319166001600160e01b03191681526020018760ff1660ff168152602001806020018681526020018060200185810385528c818151815260200191508051906020019080838360005b838110156118f35781810151838201526020016118db565b50505050905090810190601f1680156119205780820380516001836020036101000a031916815260200191505b5085810384528b5181528b516020918201918d019080838360005b8381101561195357818101518382015260200161193b565b50505050905090810190601f1680156119805780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b838110156119b357818101518382015260200161199b565b50505050905090810190601f1680156119e05780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015611a135781810151838201526020016119fb565b50505050905090810190601f168015611a405780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060006040518083038186803b158015611a6857600080fd5b505af4158015611a7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611aa557600080fd5b815160208301805160405192949293830192919084600160201b821115611acb57600080fd5b908301906020820185811115611ae057600080fd5b8251600160201b811182820188101715611af957600080fd5b82525081516020918201929091019080838360005b83811015611b26578181015183820152602001611b0e565b50505050905090810190601f168015611b535780820380516001836020036101000a031916815260200191505b5060405250505060158d01805467ffffffffffffffff191660c084901c17905580519193509150611b8d9060178d01906020840190612661565b50428b601601819055506000611c8a8b8b8b8b60405160200180856001600160e01b0319166001600160e01b031916815260040184805190602001908083835b60208310611bec5780518252601f199092019160209182019101611bcd565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b60208310611c345780518252601f199092019160209182019101611c15565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160e01b0319166001600160e01b03191681526004019450505050506040516020818303038152906040526124ff565b9050611c958c6121d4565b8b73__DepositStates_________________________63375ec42090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611ce657600080fd5b505af4158015611cfa573d6000803e3d6000fd5b505050508b73__OutsourceDepositLogging_______________63c50857849091836040518363ffffffff1660e01b8152600401808381526020018281526020019250505060006040518083038186803b158015611d5757600080fd5b505af4158015611d6b573d6000803e3d6000fd5b50505050505050505050505050505050565b8573__DepositStates_________________________6327f2744990916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611dce57600080fd5b505af4158015611de2573d6000803e3d6000fd5b505050506040513d6020811015611df857600080fd5b5051611e355760405162461bcd60e51b81526004018080602001828103825260468152602001806127466046913960600191505060405180910390fd5b8573__DepositLiquidation____________________630427cacd909187878787876040518763ffffffff1660e01b8152600401808781526020018660ff1660ff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ec7578181015183820152602001611eaf565b50505050905090810190601f168015611ef45780820380516001836020036101000a031916815260200191505b5097505050505050505060006040518083038186803b158015611f1657600080fd5b505af4158015611f2a573d6000803e3d6000fd5b505050508573__OutsourceDepositLogging_______________6309d65d2490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611f7f57600080fd5b505af4158015611f93573d6000803e3d6000fd5b505050506000611fa2876121e5565b90506120328773__DepositUtils__________________________63ad91ce1f90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611ff857600080fd5b505af415801561200c573d6000803e3d6000fd5b505050506040513d602081101561202257600080fd5b505188908363ffffffff6122bb16565b61203b87612630565b8673__DepositStates_________________________636fdbb3c490916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561208c57600080fd5b505af41580156120a0573d6000803e3d6000fd5b505050508673__OutsourceDepositLogging_______________63cebb22f590916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156120f557600080fd5b505af4158015612109573d6000803e3d6000fd5b5050505050505050505050565b600082820183811015612170576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600a8101546040805163a15c3bbb60e01b815290516001600160a01b0390921691829163a15c3bbb91600480830192600092919082900301818387803b1580156121c057600080fd5b505af1158015610c83573d6000803e3d6000fd5b6000600b8201819055600c90910155565b600a810154604080516307acd5cb60e01b8152905160009247926001600160a01b039091169182916307acd5cb916004808301928892919082900301818387803b15801561223257600080fd5b505af1158015612246573d6000803e3d6000fd5b5047925050508281116122a0576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2066756e64732072656365697665642c20756e6578706563746564000000604482015290519081900360640190fd5b6122b0818463ffffffff61230716565b93505050505b919050565b6001600160a01b03821660009081526018840160205260409020546122e6908263ffffffff61211616565b6001600160a01b039092166000908152601890930160205250604090912055565b60008282111561235e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b804710156123b9576040805162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f7567682066756e647320746f2073656e640000000000000000604482015290519081900360640190fd5b80156113ba57600a82015460408051631bb457e560e21b815290516001600160a01b03909216918291636ed15f9491859160048082019260009290919082900301818588803b15801561240b57600080fd5b505af115801561241f573d6000803e3d6000fd5b5050505050505050565b6060816124455750604080516020810190915260008152612170565b8282018381118015612458575080855110155b61249f576040805162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b604482015290519081900360640190fd5b604051915082604083010160405282825283850182038460208701018481015b808210156124d8578151838301526020820191506124bf565b505050509392505050565b60008151600014156124f7575060006122b6565b506020015190565b6000600280836040518082805190602001908083835b602083106125345780518252601f199092019160209182019101612515565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612573573d6000803e3d6000fd5b5050506040513d602081101561258857600080fd5b50516040805160208181019390935281518082038401815290820191829052805190928291908401908083835b602083106125d45780518252601f1990920191602091820191016125b5565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612613573d6000803e3d6000fd5b5050506040513d602081101561262857600080fd5b505192915050565b600a810180546001600160a01b03191690556000600b8201819055600c8201819055600d8201819055600e90910155565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106126a257805160ff19168380011785556126cf565b828001600101855582156126cf579182015b828111156126cf5782518255916020019190600101906126b4565b506126db9291506126df565b5090565b6126f991905b808211156126db57600081556001016126e5565b9056fe546865206465706f73697420686173206e6f74206661696c65642066756e64696e677075626c6963206b6579206e6f7420736574206f72206e6f742036342d6279746573206c6f6e675369676e657220667261756420647572696e672066756e64696e6720666c6f77206f6e6c7920617661696c61626c65207768696c65206177616974696e672066756e64696e674e6f742063757272656e746c79206177616974696e67207369676e6572207365747570496e73756666696369656e74207369676e657220626f6e647320746f20636f766572207365747570206665655369676e696e672067726f757020666f726d6174696f6e2074696d656f7574206e6f742079657420656c6170736564a265627a7a72315820b4ecca246673ad2b907cc63c0f0eb8c3a4f764fc9e7497f23b99743566baf33f64736f6c63430005110032",
  "sourceMap": "694:11502:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "694:11502:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2248:1679;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2248:1679:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2248:1679:3;;;;;;;;;:::i;:::-;;6589:535;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6589:535:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6589:535:3;;:::i;7837:319::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7837:319:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7837:319:3;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7837:319:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7837:319:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7837:319:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7837:319:3;;-1:-1:-1;7837:319:3;;-1:-1:-1;;;;;7837:319:3:i;4069:897::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4069:897:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4069:897:3;;:::i;5244:900::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5244:900:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5244:900:3;;:::i;10811:1383::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10811:1383:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;10811:1383:3;;;-1:-1:-1;;;;;;10811:1383:3;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10811:1383:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10811:1383:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10811:1383:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10811:1383:3;;;;;;;;-1:-1:-1;10811:1383:3;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;10811:1383:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10811:1383:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10811:1383:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10811:1383:3;;-1:-1:-1;;;;;;10811:1383:3;;;;;;;;;;;;;-1:-1:-1;10811:1383:3;-1:-1:-1;10811:1383:3;;;;-1:-1:-1;10811:1383:3;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10811:1383:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10811:1383:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10811:1383:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10811:1383:3;;;;;;;;;-1:-1:-1;10811:1383:3;;;;-1:-1:-1;10811:1383:3;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;10811:1383:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10811:1383:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10811:1383:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10811:1383:3;;-1:-1:-1;10811:1383:3;;-1:-1:-1;;;;;10811:1383:3:i;8795:825::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8795:825:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8795:825:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8795:825:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8795:825:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8795:825:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8795:825:3;;-1:-1:-1;8795:825:3;;-1:-1:-1;;;;;8795:825:3:i;2248:1679::-;2386:13;;:35;;;-1:-1:-1;;;2386:35:3;;;;-1:-1:-1;;;;;2386:13:3;;;;:33;;:35;;;;;;;;;;;;;;;:13;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;2386:35:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2386:35:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2386:35:3;2365:110;;;;;-1:-1:-1;;;2365:110:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2493:2;:10;;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2493:12:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2493:12:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2493:12:3;2485:56;;;;;-1:-1:-1;;;2485:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2552:18;;;;:37;;-1:-1:-1;;;;2552:37:3;-1:-1:-1;;;2552:37:3;;;;;;;2618:13;;:40;;;-1:-1:-1;;;2618:40:3;;;;-1:-1:-1;;;;;2618:13:3;;;;:38;;:40;;;;;;;;;;;;:13;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;2618:40:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2618:40:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2618:40:3;2600:15;;;:58;3056:13;;3145:30;;;-1:-1:-1;;;3145:30:3;;;;-1:-1:-1;;;;;3056:13:3;;;;:28;;3091:9;;3115:16;;3145:13;;:28;;:30;;;;;2618:40;;3145:30;;;;;;;;:13;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;3145:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3145:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3145:30:3;3056:129;;;-1:-1:-1;;;;;;3056:129:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3145:30;;3056:129;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;3056:129:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3056:129:3;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3056:129:3;3039:14;;;:146;;-1:-1:-1;;;;;;3039:146:3;-1:-1:-1;;;;;3039:146:3;;;;;;;;;3241:15;;;;3217:20;;;-1:-1:-1;;;3217:20:3;;;;;;;;;;:18;;;;:20;;;;;3056:129;;3217:20;;;;;;;:18;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;3217:20:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3217:20:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3217:20:3;:39;;3196:130;;;;-1:-1:-1;;;3196:130:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3359:13;;:35;;;-1:-1:-1;;;3359:35:3;;;;-1:-1:-1;;;;;3359:13:3;;;;:33;;:35;;;;;;;;;;;;;;;:13;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;3359:35:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3359:35:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3359:35:3;3337:19;;;;:57;;;;;;-1:-1:-1;;;3337:57:3;-1:-1:-1;;;;3337:57:3;;;;;;;;;;3445:26;;:80;;;-1:-1:-1;;;3445:80:3;;;;-1:-1:-1;;;;;3445:26:3;;;;:78;;:80;;;;3359:35;;3445:80;;;;;;:26;:80;;;5:2:-1;;;;30:1;27;20:12;5:2;3445:80:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3445:80:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3445:80:3;3404:38;;;:121;;;;;;;;-1:-1:-1;;3404:121:3;;;;;;;;;3584:26;;:88;;;-1:-1:-1;;;3584:88:3;;;;-1:-1:-1;;;;;3584:26:3;;;;:86;;:88;;;;;3445:80;;3584:88;;;;;;;;:26;:88;;;5:2:-1;;;;30:1;27;20:12;5:2;3584:88:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3584:88:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3584:88:3;3535:46;;;:137;;;;;;-1:-1:-1;;;3535:137:3;-1:-1:-1;;3535:137:3;;;;;;;;;3716:26;;:73;;;-1:-1:-1;;;3716:73:3;;;;-1:-1:-1;;;;;3716:26:3;;;;:71;;3535:46;3716:73;;;;3584:88;;3716:73;;;;;;;;:26;:73;;;5:2:-1;;;;30:1;27;20:12;5:2;3716:73:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3716:73:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3716:73:3;3682:31;;;:107;;-1:-1:-1;;3682:107:3;;;;;;;;;;;3828:15;3799:26;;;:44;3854:27;;;-1:-1:-1;;;3854:27:3;;;;;;;;;;:25;;;;:27;;;;;-1:-1:-1;;3854:27:3;;;;;;;:25;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;3854:27:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;3905:14:3;;;;3891:29;;;-1:-1:-1;;;3891:29:3;;;;;;;;-1:-1:-1;;;;;3905:14:3;;;3891:29;;;;;:13;;;;:29;;;;;-1:-1:-1;;3891:29:3;;;;;;;:13;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;3891:29:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3891:29:3;;;;2248:1679;;:::o;6589:535::-;6693:2;:28;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6693:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6693:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6693:30:3;6672:108;;;;;-1:-1:-1;;;6672:108:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;6845:102;6896:13;:31;:33;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6896:33:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6896:33:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6896:33:3;6845:25;;;;;:102;:29;:102;:::i;:::-;6811:15;:136;6790:215;;;;;-1:-1:-1;;;6790:215:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7015:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7015:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7015:19:3;;;;7044:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7044:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7044:19:3;;;;7074:14;:2;:12;:14::i;:::-;7098:19;7114:2;7098:15;:19::i;:::-;6589:535;:::o;7837:319::-;8035:2;:16;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8035:18:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8035:18:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8035:18:3;8027:65;;;;-1:-1:-1;;;8027:65:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8103:46;;;-1:-1:-1;;;8103:46:3;;;;;;;;;;;;;;;;;;;;;;:26;;;;:2;;8130:18;;8103:46;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8103:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;4069:897:3;4162:2;:24;;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4162:26:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4162:26:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4162:26:3;4154:57;;;;;-1:-1:-1;;;4154:57:3;;;;;;;;;;;;-1:-1:-1;;;4154:57:3;;;;;;;;;;;;;;;4276:117;4328:13;:45;:47;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4328:47:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4328:47:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4328:47:3;4276:26;;;;;:117;:30;:117;:::i;:::-;4242:15;:151;4221:245;;;;-1:-1:-1;;;4221:245:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4582:15;4600:21;:2;:19;:21::i;:::-;4582:39;;4647:2;:15;;;4636:7;:26;4632:239;;4738:55;4758:2;:15;;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4758:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4758:17:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:17:3;4777:15;;;;:2;;4758:17;4738:55;:19;:55;:::i;:::-;4807:53;4831:28;4843:2;:15;;;4831:7;:11;;:28;;;;:::i;:::-;4807:2;;:53;:23;:53;:::i;:::-;4881:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4881:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4881:19:3;;;;4910:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4910:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4910:19:3;;;;4940;4956:2;4940:15;:19::i;:::-;4069:897;;:::o;5244:900::-;5345:2;:24;;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5345:26:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5345:26:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5345:26:3;5324:108;;;;-1:-1:-1;;;5324:108:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5498:14;;;;5481:47;;;-1:-1:-1;;;5481:47:3;;;;5443:23;;-1:-1:-1;;;;;5498:14:3;;5481:45;;:47;;;;;5498:14;;5481:47;;;;;;;5498:14;5481:47;;;5:2:-1;;;;30:1;27;20:12;5:2;5481:47:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5481:47:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;5481:47:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;5481:47:3;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;5481:47:3;;420:4:-1;411:14;;;;5481:47:3;;;;;411:14:-1;5481:47:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5481:47:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5443:85;;5559:10;:17;5580:2;5559:23;5538:109;;;;-1:-1:-1;;;5538:109:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5683:35;:23;:10;5700:1;5703:2;5683:23;:16;:23;:::i;:::-;:33;:35::i;:::-;5658:22;;;:60;5753:36;:24;:10;5770:2;;5753:24;:16;:24;:::i;:36::-;5728:22;;;:61;;;5820:36;;;;:92;;-1:-1:-1;5876:22:3;;;;:36;;5820:92;5799:163;;;;;-1:-1:-1;;;5799:163:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;6000:15;5972:25;;;:43;6026:31;;;-1:-1:-1;;;6026:31:3;;;;;;;;;;:29;;;;:31;;;;;-1:-1:-1;;6026:31:3;;;;;;;:29;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;6026:31:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6026:31:3;;;;6067:2;:22;;;;6090:2;:22;;;6114:2;:22;;;6067:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;10811:1383:3;11244:2;:28;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11244:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11244:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11244:30:3;11236:63;;;;;-1:-1:-1;;;11236:63:3;;;;;;;;;;;;-1:-1:-1;;;11236:63:3;;;;;;;;;;;;;;;11310:18;11338:26;11406:2;:34;;;;11454:10;11478:14;11506:15;11535:11;11560:19;11593:12;11619:15;11648;11406:267;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11406:267:3;;-1:-1:-1;;;;;11406:267:3;;;;;;;;;;;;;-1:-1:-1;;;;;11406:267:3;;-1:-1:-1;;;;;11406:267:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11406:267:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11406:267:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11406:267:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11406:267:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11406:267:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11406:267:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11406:267:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11406:267:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11406:267:3;;;;;;39:16:-1;36:1;17:17;2:54;101:4;11406:267:3;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;11406:267:3;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;11406:267:3;;420:4:-1;411:14;;;;11406:267:3;;;;;411:14:-1;11406:267:3;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11406:267:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11406:267:3;;-1:-1:-1;;;11758:17:3;;;:31;;-1:-1:-1;;11758:31:3;;;;;;;;11799;;11758;;-1:-1:-1;11799:31:3;-1:-1:-1;11799:31:3;;:15;;;;:31;;;;;:::i;:::-;;11854:15;11840:2;:11;;:29;;;;11880:13;11908:196;11959:10;11987:14;12019:15;12052:11;11908:169;;;;;;-1:-1:-1;;;;;11908:169:3;;-1:-1:-1;;;;;11908:169:3;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11908:169:3;;;;;;;;;;-1:-1:-1;11908:169:3;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;11908:169:3;;;;;;;-1:-1:-1;;;;;11908:169:3;;-1:-1:-1;;;;;11908:169:3;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11908:169:3;;;:194;:196::i;:::-;11880:224;;12115:19;12131:2;12115:15;:19::i;:::-;12144:2;:12;;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12144:14:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12144:14:3;;;;12168:2;:12;;;;12181:5;12168:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12168:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12168:19:3;;;;10811:1383;;;;;;;;;;;;:::o;8795:825::-;9097:2;:28;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9097:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9097:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9097:30:3;9076:147;;;;-1:-1:-1;;;9076:147:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9234:2;:23;;;;9258:2;9262;9266;9270:13;9285:9;9234:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9234:61:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9234:61:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9234:61:3;;;;9305:2;:22;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9305:24:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9305:24:3;;;;9424:15;9442:21;:2;:19;:21::i;:::-;9424:39;;9473:47;9493:2;:15;;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9493:17:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9493:17:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9493:17:3;9473:2;;9512:7;9473:47;:19;:47;:::i;:::-;9531:24;9552:2;9531:20;:24::i;:::-;9565:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9565:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9565:19:3;;;;9594:2;:17;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9594:19:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9594:19:3;;;;8795:825;;;;;;;:::o;834:176:60:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:60:o;3661:162:7:-;3774:14;;;;3799:17;;;-1:-1:-1;;;3799:17:7;;;;-1:-1:-1;;;;;3774:14:7;;;;;;3799:15;;:17;;;;;3732:22;;3799:17;;;;;;;3732:22;3774:14;3799:17;;;5:2:-1;;;;30:1;27;20:12;5:2;3799:17:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;1197:153:3;1303:1;1274:26;;;:30;;;1314:25;;;;:29;1197:153::o;20331:472:7:-;20514:14;;;;20539:24;;;-1:-1:-1;;;20539:24:7;;;;20395:7;;20440:21;;-1:-1:-1;;;;;20514:14:7;;;;;;20539:22;;:24;;;;;20395:7;;20539:24;;;;;;;20395:7;20514:14;20539:24;;;5:2:-1;;;;30:1;27;20:12;5:2;20539:24:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;20601:21:7;;-1:-1:-1;;;20653:34:7;;;20632:110;;;;;-1:-1:-1;;;20632:110:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;20759:37;:16;20780:15;20759:37;:20;:37;:::i;:::-;20752:44;;;;;20331:472;;;;:::o;20976:274::-;-1:-1:-1;;;;;21160:57:7;;;;;;:22;;;:57;;;;;;:83;;21235:7;21160:83;:74;:83;:::i;:::-;-1:-1:-1;;;;;21122:35:7;;;;;;;:22;;;;:35;;-1:-1:-1;21122:35:7;;;;:121;20976:274::o;1274:179:60:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:60;;;1274:179::o;23209:351:7:-;23342:9;23317:21;:34;;23309:71;;;;;-1:-1:-1;;;23309:71:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;23394:13;;23390:164;;23465:14;;;;23494:49;;;-1:-1:-1;;;23494:49:7;;;;-1:-1:-1;;;;;23465:14:7;;;;;;23494:30;;23531:9;;23494:49;;;;;23423:22;;23494:49;;;;;;;;23531:9;23465:14;23494:49;;;5:2:-1;;;;30:1;27;20:12;5:2;23494:49:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23494:49:7;;;;;23390:164;23209:351;;:::o;10345:924:49:-;10432:16;10464:12;10460:55;;-1:-1:-1;10492:12:49;;;;;;;;;-1:-1:-1;10492:12:49;;;;10460:55;10536:16;;;10570:13;;;:38;;;;;10604:4;10587:6;:13;:21;;10570:38;10562:70;;;;;-1:-1:-1;;;10562:70:49;;;;;;;;;;;;-1:-1:-1;;;10562:70:49;;;;;;;;;;;;;;;10769:4;10763:11;10756:18;;10818:7;10813:2;10808:3;10804:12;10800:26;10794:4;10787:40;10852:7;10847:3;10840:20;10979:6;10971;10967:19;10962:3;10958:29;11055:6;11050:2;11042:6;11038:15;11034:28;11099:7;11094:3;11090:17;11001:252;11130:3;11125;11122:12;11001:252;;;11234:3;11228:10;11221:4;11216:3;11212:14;11205:34;11169:2;11164:3;11160:12;11153:19;;11001:252;;;11005:116;;10652:611;;;;;;;:::o;16172:232::-;16236:14;16266:7;:14;16284:1;16266:19;16262:60;;;-1:-1:-1;16308:3:49;16301:10;;16262:60;-1:-1:-1;16384:2:49;16371:16;16365:23;;16341:57::o;5703:126:48:-;5760:7;5786:36;5810:10;5817:2;5810:10;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5810:10:48;;;;;;;-1:-1:-1;263:2;;-1:-1;;5810:10:48;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5810:10:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5810:10:48;5793:28;;;5810:10;5793:28;;;;;;;;;26:21:-1;;;22:32;;6:49;;5793:28:48;;;;;;;5786:36;;5793:28;;;;5786:36;;;;;5793:28;5786:36;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5786:36:48;;;;;;;-1:-1:-1;263:2;;-1:-1;;5786:36:48;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5786:36:48;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5786:36:48;;5703:126;-1:-1:-1;;5703:126:48:o;1503:285:3:-;1585:14;;;:27;;-1:-1:-1;;;;;;1585:27:3;;;1610:1;1622:26;;;:30;;;1662:25;;;:29;;;1701:22;;;:35;;;1746:22;;;;:35;1503:285::o;694:11502::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;694:11502:3;;;-1:-1:-1;694:11502:3;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity 0.5.17;\n\nimport {BytesLib} from \"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\";\nimport {BTCUtils} from \"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\";\nimport {\n    IBondedECDSAKeep\n} from \"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\";\nimport {SafeMath} from \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport {TBTCToken} from \"../system/TBTCToken.sol\";\nimport {DepositUtils} from \"./DepositUtils.sol\";\nimport {DepositLiquidation} from \"./DepositLiquidation.sol\";\nimport {DepositStates} from \"./DepositStates.sol\";\nimport {OutsourceDepositLogging} from \"./OutsourceDepositLogging.sol\";\nimport {TBTCConstants} from \"../system/TBTCConstants.sol\";\n\nlibrary DepositFunding {\n    using SafeMath for uint256;\n    using SafeMath for uint64;\n    using BTCUtils for bytes;\n    using BytesLib for bytes;\n\n    using DepositUtils for DepositUtils.Deposit;\n    using DepositStates for DepositUtils.Deposit;\n    using DepositLiquidation for DepositUtils.Deposit;\n    using OutsourceDepositLogging for DepositUtils.Deposit;\n\n    /// @notice     Deletes state after funding.\n    /// @dev        This is called when we go to ACTIVE or setup fails without fraud.\n    function fundingTeardown(DepositUtils.Deposit storage _d) internal {\n        _d.signingGroupRequestedAt = 0;\n        _d.fundingProofTimerStart = 0;\n    }\n\n    /// @notice     Deletes state after the funding ECDSA fraud process.\n    /// @dev        This is only called as we transition to setup failed.\n    function fundingFraudTeardown(DepositUtils.Deposit storage _d) internal {\n        _d.keepAddress = address(0);\n        _d.signingGroupRequestedAt = 0;\n        _d.fundingProofTimerStart = 0;\n        _d.signingGroupPubkeyX = bytes32(0);\n        _d.signingGroupPubkeyY = bytes32(0);\n    }\n\n    /// @notice Internally called function to set up a newly created Deposit\n    ///         instance. This should not be called by developers, use\n    ///         `DepositFactory.createDeposit` to create a new deposit.\n    /// @dev If called directly, the transaction will revert since the call will\n    ///      be executed on an already set-up instance.\n    /// @param _d Deposit storage pointer.\n    /// @param _lotSizeSatoshis Lot size in satoshis.\n    function initialize(\n        DepositUtils.Deposit storage _d,\n        uint64 _lotSizeSatoshis\n    ) public {\n        require(\n            _d.tbtcSystem.getAllowNewDeposits(),\n            \"New deposits aren't allowed.\"\n        );\n        require(_d.inStart(), \"Deposit setup already requested\");\n\n        _d.lotSizeSatoshis = _lotSizeSatoshis;\n\n        _d.keepSetupFee = _d.tbtcSystem.getNewDepositFeeEstimate();\n\n        // Note: this is a library, and library functions cannot be marked as\n        // payable. Thus, we disable Solium's check that msg.value can only be\n        // used in a payable function---this restriction actually applies to the\n        // caller of this `initialize` function, Deposit.initializeDeposit.\n        /* solium-disable-next-line value-in-payable */\n        _d.keepAddress = _d.tbtcSystem.requestNewKeep.value(msg.value)(\n            _lotSizeSatoshis,\n            TBTCConstants.getDepositTerm()\n        );\n\n        require(\n            _d.fetchBondAmount() >= _d.keepSetupFee,\n            \"Insufficient signer bonds to cover setup fee\"\n        );\n\n        _d.signerFeeDivisor = _d.tbtcSystem.getSignerFeeDivisor();\n        _d.undercollateralizedThresholdPercent = _d\n            .tbtcSystem\n            .getUndercollateralizedThresholdPercent();\n        _d.severelyUndercollateralizedThresholdPercent = _d\n            .tbtcSystem\n            .getSeverelyUndercollateralizedThresholdPercent();\n        _d.initialCollateralizedPercent = _d\n            .tbtcSystem\n            .getInitialCollateralizedPercent();\n        _d.signingGroupRequestedAt = block.timestamp;\n\n        _d.setAwaitingSignerSetup();\n        _d.logCreated(_d.keepAddress);\n    }\n\n    /// @notice     Anyone may notify the contract that signing group setup has timed out.\n    /// @param  _d  Deposit storage pointer.\n    function notifySignerSetupFailed(DepositUtils.Deposit storage _d) external {\n        require(_d.inAwaitingSignerSetup(), \"Not awaiting setup\");\n        require(\n            block.timestamp >\n                _d.signingGroupRequestedAt.add(\n                    TBTCConstants.getSigningGroupFormationTimeout()\n                ),\n            \"Signing group formation timeout not yet elapsed\"\n        );\n\n        // refund the deposit owner the cost to create a new Deposit at the time the Deposit was opened.\n        uint256 _seized = _d.seizeSignerBonds();\n\n        if (_seized >= _d.keepSetupFee) {\n            /* solium-disable-next-line security/no-send */\n            _d.enableWithdrawal(_d.depositOwner(), _d.keepSetupFee);\n            _d.pushFundsToKeepGroup(_seized.sub(_d.keepSetupFee));\n        }\n\n        _d.setFailedSetup();\n        _d.logSetupFailed();\n\n        fundingTeardown(_d);\n    }\n\n    /// @notice             we poll the Keep contract to retrieve our pubkey.\n    /// @dev                We store the pubkey as 2 bytestrings, X and Y.\n    /// @param  _d          Deposit storage pointer.\n    /// @return             True if successful, otherwise revert.\n    function retrieveSignerPubkey(DepositUtils.Deposit storage _d) public {\n        require(\n            _d.inAwaitingSignerSetup(),\n            \"Not currently awaiting signer setup\"\n        );\n\n        bytes memory _publicKey =\n            IBondedECDSAKeep(_d.keepAddress).getPublicKey();\n        require(\n            _publicKey.length == 64,\n            \"public key not set or not 64-bytes long\"\n        );\n\n        _d.signingGroupPubkeyX = _publicKey.slice(0, 32).toBytes32();\n        _d.signingGroupPubkeyY = _publicKey.slice(32, 32).toBytes32();\n        require(\n            _d.signingGroupPubkeyY != bytes32(0) &&\n                _d.signingGroupPubkeyX != bytes32(0),\n            \"Keep returned bad pubkey\"\n        );\n        _d.fundingProofTimerStart = block.timestamp;\n\n        _d.setAwaitingBTCFundingProof();\n        _d.logRegisteredPubkey(_d.signingGroupPubkeyX, _d.signingGroupPubkeyY);\n    }\n\n    /// @notice Anyone may notify the contract that the funder has failed to\n    ///         prove that they have sent BTC in time.\n    /// @dev This is considered a funder fault, and the funder's payment for\n    ///      opening the deposit is not refunded. Reverts if the funding timeout\n    ///      has not yet elapsed, or if the deposit is not currently awaiting\n    ///      funding proof.\n    /// @param _d Deposit storage pointer.\n    function notifyFundingTimedOut(DepositUtils.Deposit storage _d) external {\n        require(\n            _d.inAwaitingBTCFundingProof(),\n            \"Funding timeout has not started\"\n        );\n        require(\n            block.timestamp >\n                _d.fundingProofTimerStart.add(\n                    TBTCConstants.getFundingTimeout()\n                ),\n            \"Funding timeout has not elapsed.\"\n        );\n        _d.setFailedSetup();\n        _d.logSetupFailed();\n\n        _d.closeKeep();\n        fundingTeardown(_d);\n    }\n\n    /// @notice Requests a funder abort for a failed-funding deposit; that is,\n    ///         requests return of a sent UTXO to `_abortOutputScript`. This can\n    ///         be used for example when a UTXO is sent that is the wrong size\n    ///         for the lot. Must be called after setup fails for any reason,\n    ///         and imposes no requirement or incentive on the signing group to\n    ///         return the UTXO.\n    /// @dev This is a self-admitted funder fault, and should only be callable\n    ///      by the TDT holder.\n    /// @param _d Deposit storage pointer.\n    /// @param _abortOutputScript The output script the funder wishes to request\n    ///        a return of their UTXO to.\n    function requestFunderAbort(\n        DepositUtils.Deposit storage _d,\n        bytes memory _abortOutputScript\n    ) public {\n        // not external to allow bytes memory parameters\n        require(_d.inFailedSetup(), \"The deposit has not failed funding\");\n\n        _d.logFunderRequestedAbort(_abortOutputScript);\n    }\n\n    /// @notice                 Anyone can provide a signature that was not requested to prove fraud during funding.\n    /// @dev                    Calls out to the keep to verify if there was fraud.\n    /// @param  _d              Deposit storage pointer.\n    /// @param  _v              Signature recovery value.\n    /// @param  _r              Signature R value.\n    /// @param  _s              Signature S value.\n    /// @param _signedDigest    The digest signed by the signature vrs tuple.\n    /// @param _preimage        The sha256 preimage of the digest.\n    /// @return                 True if successful, otherwise revert.\n    function provideFundingECDSAFraudProof(\n        DepositUtils.Deposit storage _d,\n        uint8 _v,\n        bytes32 _r,\n        bytes32 _s,\n        bytes32 _signedDigest,\n        bytes memory _preimage\n    ) public {\n        // not external to allow bytes memory parameters\n        require(\n            _d.inAwaitingBTCFundingProof(),\n            \"Signer fraud during funding flow only available while awaiting funding\"\n        );\n\n        _d.submitSignatureFraud(_v, _r, _s, _signedDigest, _preimage);\n        _d.logFraudDuringSetup();\n\n        // Allow deposit owner to withdraw seized bonds after contract termination.\n        uint256 _seized = _d.seizeSignerBonds();\n        _d.enableWithdrawal(_d.depositOwner(), _seized);\n\n        fundingFraudTeardown(_d);\n        _d.setFailedSetup();\n        _d.logSetupFailed();\n    }\n\n    /// @notice                     Anyone may notify the deposit of a funding proof to activate the deposit.\n    ///                             This is the happy-path of the funding flow. It means that we have succeeded.\n    /// @dev                        Takes a pre-parsed transaction and calculates values needed to verify funding.\n    /// @param  _d                  Deposit storage pointer.\n    /// @param _txVersion           Transaction version number (4-byte LE).\n    /// @param _txInputVector       All transaction inputs prepended by the number of inputs encoded as a VarInt, max 0xFC(252) inputs.\n    /// @param _txOutputVector      All transaction outputs prepended by the number of outputs encoded as a VarInt, max 0xFC(252) outputs.\n    /// @param _txLocktime          Final 4 bytes of the transaction.\n    /// @param _fundingOutputIndex  Index of funding output in _txOutputVector (0-indexed).\n    /// @param _merkleProof         The merkle proof of transaction inclusion in a block.\n    /// @param _txIndexInBlock      Transaction index in the block (0-indexed).\n    /// @param _bitcoinHeaders      Single bytestring of 80-byte bitcoin headers, lowest height first.\n    function provideBTCFundingProof(\n        DepositUtils.Deposit storage _d,\n        bytes4 _txVersion,\n        bytes memory _txInputVector,\n        bytes memory _txOutputVector,\n        bytes4 _txLocktime,\n        uint8 _fundingOutputIndex,\n        bytes memory _merkleProof,\n        uint256 _txIndexInBlock,\n        bytes memory _bitcoinHeaders\n    ) public {\n        // not external to allow bytes memory parameters\n\n        require(_d.inAwaitingBTCFundingProof(), \"Not awaiting funding\");\n\n        bytes8 _valueBytes;\n        bytes memory _utxoOutpoint;\n\n        (_valueBytes, _utxoOutpoint) = _d.validateAndParseFundingSPVProof(\n            _txVersion,\n            _txInputVector,\n            _txOutputVector,\n            _txLocktime,\n            _fundingOutputIndex,\n            _merkleProof,\n            _txIndexInBlock,\n            _bitcoinHeaders\n        );\n\n        // Write down the UTXO info and set to active. Congratulations :)\n        _d.utxoValueBytes = _valueBytes;\n        _d.utxoOutpoint = _utxoOutpoint;\n        _d.fundedAt = block.timestamp;\n\n        bytes32 _txid =\n            abi\n                .encodePacked(\n                _txVersion,\n                _txInputVector,\n                _txOutputVector,\n                _txLocktime\n            )\n                .hash256();\n\n        fundingTeardown(_d);\n        _d.setActive();\n        _d.logFunded(_txid);\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol",
    "exportedSymbols": {
      "DepositFunding": [
        1757
      ]
    },
    "id": 1758,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1136,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:3"
      },
      {
        "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
        "file": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
        "id": 1138,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 13433,
        "src": "25:74:3",
        "symbolAliases": [
          {
            "foreign": 1137,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
        "file": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
        "id": 1140,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 13217,
        "src": "100:74:3",
        "symbolAliases": [
          {
            "foreign": 1139,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
        "file": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
        "id": 1142,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 11429,
        "src": "175:99:3",
        "symbolAliases": [
          {
            "foreign": 1141,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 1144,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 16856,
        "src": "275:75:3",
        "symbolAliases": [
          {
            "foreign": 1143,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol",
        "file": "../system/TBTCToken.sol",
        "id": 1146,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 8562,
        "src": "351:50:3",
        "symbolAliases": [
          {
            "foreign": 1145,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
        "file": "./DepositUtils.sol",
        "id": 1148,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 5104,
        "src": "402:48:3",
        "symbolAliases": [
          {
            "foreign": 1147,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol",
        "file": "./DepositLiquidation.sol",
        "id": 1150,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 2331,
        "src": "451:60:3",
        "symbolAliases": [
          {
            "foreign": 1149,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol",
        "file": "./DepositStates.sol",
        "id": 1152,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 3779,
        "src": "512:50:3",
        "symbolAliases": [
          {
            "foreign": 1151,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol",
        "file": "./OutsourceDepositLogging.sol",
        "id": 1154,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 5419,
        "src": "563:70:3",
        "symbolAliases": [
          {
            "foreign": 1153,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol",
        "file": "../system/TBTCConstants.sol",
        "id": 1156,
        "nodeType": "ImportDirective",
        "scope": 1758,
        "sourceUnit": 6758,
        "src": "634:58:3",
        "symbolAliases": [
          {
            "foreign": 1155,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1757,
        "linearizedBaseContracts": [
          1757
        ],
        "name": "DepositFunding",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1159,
            "libraryName": {
              "contractScope": null,
              "id": 1157,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16855,
              "src": "729:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$16855",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "723:27:3",
            "typeName": {
              "id": 1158,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "742:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 1162,
            "libraryName": {
              "contractScope": null,
              "id": 1160,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16855,
              "src": "761:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$16855",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "755:26:3",
            "typeName": {
              "id": 1161,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "774:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            }
          },
          {
            "id": 1165,
            "libraryName": {
              "contractScope": null,
              "id": 1163,
              "name": "BTCUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13216,
              "src": "792:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BTCUtils_$13216",
                "typeString": "library BTCUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "786:25:3",
            "typeName": {
              "id": 1164,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "805:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "id": 1168,
            "libraryName": {
              "contractScope": null,
              "id": 1166,
              "name": "BytesLib",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13432,
              "src": "822:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesLib_$13432",
                "typeString": "library BytesLib"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "816:25:3",
            "typeName": {
              "id": 1167,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "835:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "id": 1171,
            "libraryName": {
              "contractScope": null,
              "id": 1169,
              "name": "DepositUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5103,
              "src": "853:12:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositUtils_$5103",
                "typeString": "library DepositUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "847:44:3",
            "typeName": {
              "contractScope": null,
              "id": 1170,
              "name": "DepositUtils.Deposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3893,
              "src": "870:20:3",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                "typeString": "struct DepositUtils.Deposit"
              }
            }
          },
          {
            "id": 1174,
            "libraryName": {
              "contractScope": null,
              "id": 1172,
              "name": "DepositStates",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3778,
              "src": "902:13:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositStates_$3778",
                "typeString": "library DepositStates"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "896:45:3",
            "typeName": {
              "contractScope": null,
              "id": 1173,
              "name": "DepositUtils.Deposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3893,
              "src": "920:20:3",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                "typeString": "struct DepositUtils.Deposit"
              }
            }
          },
          {
            "id": 1177,
            "libraryName": {
              "contractScope": null,
              "id": 1175,
              "name": "DepositLiquidation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2330,
              "src": "952:18:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositLiquidation_$2330",
                "typeString": "library DepositLiquidation"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "946:50:3",
            "typeName": {
              "contractScope": null,
              "id": 1176,
              "name": "DepositUtils.Deposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3893,
              "src": "975:20:3",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                "typeString": "struct DepositUtils.Deposit"
              }
            }
          },
          {
            "id": 1180,
            "libraryName": {
              "contractScope": null,
              "id": 1178,
              "name": "OutsourceDepositLogging",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5418,
              "src": "1007:23:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OutsourceDepositLogging_$5418",
                "typeString": "library OutsourceDepositLogging"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1001:55:3",
            "typeName": {
              "contractScope": null,
              "id": 1179,
              "name": "DepositUtils.Deposit",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3893,
              "src": "1035:20:3",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                "typeString": "struct DepositUtils.Deposit"
              }
            }
          },
          {
            "body": {
              "id": 1197,
              "nodeType": "Block",
              "src": "1264:86:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1185,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "1274:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1187,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupRequestedAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3860,
                      "src": "1274:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1303:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1274:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1190,
                  "nodeType": "ExpressionStatement",
                  "src": "1274:30:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1191,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "1314:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1193,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "fundingProofTimerStart",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3862,
                      "src": "1314:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1342:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1314:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1196,
                  "nodeType": "ExpressionStatement",
                  "src": "1314:29:3"
                }
              ]
            },
            "documentation": "@notice     Deletes state after funding.\n @dev        This is called when we go to ACTIVE or setup fails without fraud.",
            "id": 1198,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fundingTeardown",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1182,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1198,
                  "src": "1222:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1181,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "1222:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1221:33:3"
            },
            "returnParameters": {
              "id": 1184,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1264:0:3"
            },
            "scope": 1757,
            "src": "1197:153:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1239,
              "nodeType": "Block",
              "src": "1575:213:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1203,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1200,
                        "src": "1585:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1205,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keepAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3858,
                      "src": "1585:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1610:1:3",
                          "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": 1206,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1602:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1208,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1602:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1585:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1210,
                  "nodeType": "ExpressionStatement",
                  "src": "1585:27:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1211,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1200,
                        "src": "1622:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1213,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupRequestedAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3860,
                      "src": "1622:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1214,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1651:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1622:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1216,
                  "nodeType": "ExpressionStatement",
                  "src": "1622:30:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1217,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1200,
                        "src": "1662:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1219,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "fundingProofTimerStart",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3862,
                      "src": "1662:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1690:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1662:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1222,
                  "nodeType": "ExpressionStatement",
                  "src": "1662:29:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1229,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1223,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1200,
                        "src": "1701:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1225,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3864,
                      "src": "1701:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1734:1:3",
                          "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": 1226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1726:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 1228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1726:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1701:35:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1230,
                  "nodeType": "ExpressionStatement",
                  "src": "1701:35:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1231,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1200,
                        "src": "1746:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1233,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3866,
                      "src": "1746:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1779:1:3",
                          "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": 1234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1771:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_bytes32_$",
                          "typeString": "type(bytes32)"
                        },
                        "typeName": "bytes32"
                      },
                      "id": 1236,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1771:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1746:35:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1238,
                  "nodeType": "ExpressionStatement",
                  "src": "1746:35:3"
                }
              ]
            },
            "documentation": "@notice     Deletes state after the funding ECDSA fraud process.\n @dev        This is only called as we transition to setup failed.",
            "id": 1240,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fundingFraudTeardown",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1200,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1240,
                  "src": "1533:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1199,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "1533:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1532:33:3"
            },
            "returnParameters": {
              "id": 1202,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1575:0:3"
            },
            "scope": 1757,
            "src": "1503:285:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1359,
              "nodeType": "Block",
              "src": "2355:1572:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1248,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1242,
                              "src": "2386:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1249,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "2386:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          },
                          "id": 1250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAllowNewDeposits",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5474,
                          "src": "2386:33:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                            "typeString": "function () view external returns (bool)"
                          }
                        },
                        "id": 1251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2386:35:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6577206465706f73697473206172656e277420616c6c6f7765642e",
                        "id": 1252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2435:30:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e0945cc76e7f56b732824a3e200ae2e7edfbd7dcb5a6ae3438aa876dea4a21c3",
                          "typeString": "literal_string \"New deposits aren't allowed.\""
                        },
                        "value": "New deposits aren't allowed."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e0945cc76e7f56b732824a3e200ae2e7edfbd7dcb5a6ae3438aa876dea4a21c3",
                          "typeString": "literal_string \"New deposits aren't allowed.\""
                        }
                      ],
                      "id": 1247,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "2365:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2365:110:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1254,
                  "nodeType": "ExpressionStatement",
                  "src": "2365:110:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1256,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1242,
                            "src": "2493:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1257,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inStart",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3436,
                          "src": "2493:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 1258,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2493:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f73697420736574757020616c726561647920726571756573746564",
                        "id": 1259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2507:33:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b5dbce7b0bb4f789e3075fed8f2d514968e1183258a67ed5fbb62b32ecb10de2",
                          "typeString": "literal_string \"Deposit setup already requested\""
                        },
                        "value": "Deposit setup already requested"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b5dbce7b0bb4f789e3075fed8f2d514968e1183258a67ed5fbb62b32ecb10de2",
                          "typeString": "literal_string \"Deposit setup already requested\""
                        }
                      ],
                      "id": 1255,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "2485:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2485:56:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1261,
                  "nodeType": "ExpressionStatement",
                  "src": "2485:56:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1262,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "2552:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1264,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "lotSizeSatoshis",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3838,
                      "src": "2552:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1265,
                      "name": "_lotSizeSatoshis",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1244,
                      "src": "2573:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "2552:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 1267,
                  "nodeType": "ExpressionStatement",
                  "src": "2552:37:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1275,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1268,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "2600:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1270,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keepSetupFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3850,
                      "src": "2600:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1271,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1242,
                            "src": "2618:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1272,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tbtcSystem",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3828,
                          "src": "2618:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                            "typeString": "contract ITBTCSystem"
                          }
                        },
                        "id": 1273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getNewDepositFeeEstimate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5469,
                        "src": "2618:38:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 1274,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2618:40:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2600:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1276,
                  "nodeType": "ExpressionStatement",
                  "src": "2600:58:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1277,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "3039:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1279,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "keepAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3858,
                      "src": "3039:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1287,
                          "name": "_lotSizeSatoshis",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1244,
                          "src": "3115:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1288,
                              "name": "TBTCConstants",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6757,
                              "src": "3145:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TBTCConstants_$6757_$",
                                "typeString": "type(library TBTCConstants)"
                              }
                            },
                            "id": 1289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getDepositTerm",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6676,
                            "src": "3145:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$",
                              "typeString": "function () pure returns (uint256)"
                            }
                          },
                          "id": 1290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3145:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1284,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "3091:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3091:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1280,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1242,
                                "src": "3056:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 1281,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tbtcSystem",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3828,
                              "src": "3056:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                "typeString": "contract ITBTCSystem"
                              }
                            },
                            "id": 1282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "requestNewKeep",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5490,
                            "src": "3056:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_uint64_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint64,uint256) payable external returns (address)"
                            }
                          },
                          "id": 1283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3056:34:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_external_payable$_t_uint64_$_t_uint256_$returns$_t_address_$value_$",
                            "typeString": "function (uint256) pure returns (function (uint64,uint256) payable external returns (address))"
                          }
                        },
                        "id": 1286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3056:45:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$_t_uint64_$_t_uint256_$returns$_t_address_$value",
                          "typeString": "function (uint64,uint256) payable external returns (address)"
                        }
                      },
                      "id": 1291,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3056:129:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3039:146:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1293,
                  "nodeType": "ExpressionStatement",
                  "src": "3039:146:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1295,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1242,
                              "src": "3217:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1296,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fetchBondAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4503,
                            "src": "3217:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 1297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3217:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1298,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1242,
                            "src": "3241:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1299,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "keepSetupFee",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3850,
                          "src": "3241:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3217:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e73756666696369656e74207369676e657220626f6e647320746f20636f76657220736574757020666565",
                        "id": 1301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3270:46:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_bfd1aac2f371e47d4c5966543c04f0605f70a97fbc02f53113e7e09beab160bf",
                          "typeString": "literal_string \"Insufficient signer bonds to cover setup fee\""
                        },
                        "value": "Insufficient signer bonds to cover setup fee"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_bfd1aac2f371e47d4c5966543c04f0605f70a97fbc02f53113e7e09beab160bf",
                          "typeString": "literal_string \"Insufficient signer bonds to cover setup fee\""
                        }
                      ],
                      "id": 1294,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "3196:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3196:130:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1303,
                  "nodeType": "ExpressionStatement",
                  "src": "3196:130:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1304,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "3337:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signerFeeDivisor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3842,
                      "src": "3337:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1307,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1242,
                            "src": "3359:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1308,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tbtcSystem",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3828,
                          "src": "3359:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                            "typeString": "contract ITBTCSystem"
                          }
                        },
                        "id": 1309,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getSignerFeeDivisor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5495,
                        "src": "3359:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                          "typeString": "function () view external returns (uint16)"
                        }
                      },
                      "id": 1310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3359:35:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "3337:57:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 1312,
                  "nodeType": "ExpressionStatement",
                  "src": "3337:57:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1313,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "3404:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1315,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "undercollateralizedThresholdPercent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3846,
                      "src": "3404:38:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1316,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1242,
                            "src": "3445:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1317,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tbtcSystem",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3828,
                          "src": "3445:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                            "typeString": "contract ITBTCSystem"
                          }
                        },
                        "id": 1318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getUndercollateralizedThresholdPercent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5505,
                        "src": "3445:78:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                          "typeString": "function () view external returns (uint16)"
                        }
                      },
                      "id": 1319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3445:80:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "3404:121:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 1321,
                  "nodeType": "ExpressionStatement",
                  "src": "3404:121:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1322,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "3535:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1324,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "severelyUndercollateralizedThresholdPercent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3848,
                      "src": "3535:46:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1325,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1242,
                            "src": "3584:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1326,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tbtcSystem",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3828,
                          "src": "3584:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                            "typeString": "contract ITBTCSystem"
                          }
                        },
                        "id": 1327,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getSeverelyUndercollateralizedThresholdPercent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5510,
                        "src": "3584:86:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                          "typeString": "function () view external returns (uint16)"
                        }
                      },
                      "id": 1328,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3584:88:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "3535:137:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 1330,
                  "nodeType": "ExpressionStatement",
                  "src": "3535:137:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1331,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "3682:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1333,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "initialCollateralizedPercent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3844,
                      "src": "3682:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1334,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1242,
                            "src": "3716:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1335,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "tbtcSystem",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3828,
                          "src": "3716:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                            "typeString": "contract ITBTCSystem"
                          }
                        },
                        "id": 1336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getInitialCollateralizedPercent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5500,
                        "src": "3716:71:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                          "typeString": "function () view external returns (uint16)"
                        }
                      },
                      "id": 1337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3716:73:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "3682:107:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "id": 1339,
                  "nodeType": "ExpressionStatement",
                  "src": "3682:107:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1340,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "3799:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1342,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupRequestedAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3860,
                      "src": "3799:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1343,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18350,
                        "src": "3828:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 1344,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3828:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3799:44:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1346,
                  "nodeType": "ExpressionStatement",
                  "src": "3799:44:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1347,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "3854:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1349,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAwaitingSignerSetup",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3627,
                      "src": "3854:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3854:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1351,
                  "nodeType": "ExpressionStatement",
                  "src": "3854:27:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1355,
                          "name": "_d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1242,
                          "src": "3905:2:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                            "typeString": "struct DepositUtils.Deposit storage pointer"
                          }
                        },
                        "id": 1356,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "keepAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3858,
                        "src": "3905:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1352,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1242,
                        "src": "3891:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1354,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logCreated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5132,
                      "src": "3891:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,address)"
                      }
                    },
                    "id": 1357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3891:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1358,
                  "nodeType": "ExpressionStatement",
                  "src": "3891:29:3"
                }
              ]
            },
            "documentation": "@notice Internally called function to set up a newly created Deposit\n         instance. This should not be called by developers, use\n         `DepositFactory.createDeposit` to create a new deposit.\n @dev If called directly, the transaction will revert since the call will\n      be executed on an already set-up instance.\n @param _d Deposit storage pointer.\n @param _lotSizeSatoshis Lot size in satoshis.",
            "id": 1360,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1242,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2277:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1241,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "2277:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1244,
                  "name": "_lotSizeSatoshis",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2318:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 1243,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2318:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2267:80:3"
            },
            "returnParameters": {
              "id": 1246,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2355:0:3"
            },
            "scope": 1757,
            "src": "2248:1679:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1432,
              "nodeType": "Block",
              "src": "4144:822:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1366,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1362,
                            "src": "4162:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1367,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inAwaitingSignerSetup",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3452,
                          "src": "4162:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 1368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4162:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f74206177616974696e67207365747570",
                        "id": 1369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4190:20:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a92f1949cb38ece98dd4b18be5c21a4fac3878964357e097cdd519b99354aa78",
                          "typeString": "literal_string \"Not awaiting setup\""
                        },
                        "value": "Not awaiting setup"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a92f1949cb38ece98dd4b18be5c21a4fac3878964357e097cdd519b99354aa78",
                          "typeString": "literal_string \"Not awaiting setup\""
                        }
                      ],
                      "id": 1365,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "4154:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4154:57:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1371,
                  "nodeType": "ExpressionStatement",
                  "src": "4154:57:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1382,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1373,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18350,
                            "src": "4242:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4242:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1378,
                                  "name": "TBTCConstants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6757,
                                  "src": "4328:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TBTCConstants_$6757_$",
                                    "typeString": "type(library TBTCConstants)"
                                  }
                                },
                                "id": 1379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSigningGroupFormationTimeout",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6740,
                                "src": "4328:45:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 1380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4328:47:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1375,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1362,
                                "src": "4276:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 1376,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signingGroupRequestedAt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3860,
                              "src": "4276:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16749,
                            "src": "4276:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4276:117:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4242:151:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5369676e696e672067726f757020666f726d6174696f6e2074696d656f7574206e6f742079657420656c6170736564",
                        "id": 1383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4407:49:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fab1e418dff90a3be73ef7a8e43ed13949aff02a83099649af6d7e097099b161",
                          "typeString": "literal_string \"Signing group formation timeout not yet elapsed\""
                        },
                        "value": "Signing group formation timeout not yet elapsed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fab1e418dff90a3be73ef7a8e43ed13949aff02a83099649af6d7e097099b161",
                          "typeString": "literal_string \"Signing group formation timeout not yet elapsed\""
                        }
                      ],
                      "id": 1372,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "4221:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4221:245:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1385,
                  "nodeType": "ExpressionStatement",
                  "src": "4221:245:3"
                },
                {
                  "assignments": [
                    1387
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1387,
                      "name": "_seized",
                      "nodeType": "VariableDeclaration",
                      "scope": 1432,
                      "src": "4582:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1386,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4582:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1391,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1388,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1362,
                        "src": "4600:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1389,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "seizeSignerBonds",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4698,
                      "src": "4600:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) returns (uint256)"
                      }
                    },
                    "id": 1390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4600:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4582:39:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1392,
                      "name": "_seized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1387,
                      "src": "4636:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1393,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1362,
                        "src": "4647:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1394,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "keepSetupFee",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3850,
                      "src": "4647:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4636:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1417,
                  "nodeType": "IfStatement",
                  "src": "4632:239:3",
                  "trueBody": {
                    "id": 1416,
                    "nodeType": "Block",
                    "src": "4664:207:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1399,
                                  "name": "_d",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1362,
                                  "src": "4758:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                    "typeString": "struct DepositUtils.Deposit storage pointer"
                                  }
                                },
                                "id": 1400,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "depositOwner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4604,
                                "src": "4758:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_address_payable_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                                  "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (address payable)"
                                }
                              },
                              "id": 1401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4758:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1402,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1362,
                                "src": "4777:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 1403,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "keepSetupFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3850,
                              "src": "4777:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1396,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1362,
                              "src": "4738:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "enableWithdrawal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4722,
                            "src": "4738:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                            }
                          },
                          "id": 1404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4738:55:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1405,
                        "nodeType": "ExpressionStatement",
                        "src": "4738:55:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1411,
                                    "name": "_d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1362,
                                    "src": "4843:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                      "typeString": "struct DepositUtils.Deposit storage pointer"
                                    }
                                  },
                                  "id": 1412,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "keepSetupFee",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3850,
                                  "src": "4843:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1409,
                                  "name": "_seized",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1387,
                                  "src": "4831:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16774,
                                "src": "4831:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4831:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1406,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1362,
                              "src": "4807:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1408,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pushFundsToKeepGroup",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4882,
                            "src": "4807:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                              "typeString": "function (struct DepositUtils.Deposit storage pointer,uint256)"
                            }
                          },
                          "id": 1414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4807:53:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1415,
                        "nodeType": "ExpressionStatement",
                        "src": "4807:53:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1418,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1362,
                        "src": "4881:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFailedSetup",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3657,
                      "src": "4881:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4881:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1422,
                  "nodeType": "ExpressionStatement",
                  "src": "4881:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1423,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1362,
                        "src": "4910:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1425,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logSetupFailed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5245,
                      "src": "4910:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4910:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1427,
                  "nodeType": "ExpressionStatement",
                  "src": "4910:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1429,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1362,
                        "src": "4956:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      ],
                      "id": 1428,
                      "name": "fundingTeardown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1198,
                      "src": "4940:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4940:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1431,
                  "nodeType": "ExpressionStatement",
                  "src": "4940:19:3"
                }
              ]
            },
            "documentation": "@notice     Anyone may notify the contract that signing group setup has timed out.\n @param  _d  Deposit storage pointer.",
            "id": 1433,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "notifySignerSetupFailed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1362,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1433,
                  "src": "4102:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1361,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4102:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4101:33:3"
            },
            "returnParameters": {
              "id": 1364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4144:0:3"
            },
            "scope": 1757,
            "src": "4069:897:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1524,
              "nodeType": "Block",
              "src": "5314:830:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1439,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1435,
                            "src": "5345:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1440,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inAwaitingSignerSetup",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3452,
                          "src": "5345:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 1441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5345:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f742063757272656e746c79206177616974696e67207369676e6572207365747570",
                        "id": 1442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5385:37:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ae26757200821b3ad77756c623b24fdd01adb505f01f8a6473e86b9cdf777c0b",
                          "typeString": "literal_string \"Not currently awaiting signer setup\""
                        },
                        "value": "Not currently awaiting signer setup"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ae26757200821b3ad77756c623b24fdd01adb505f01f8a6473e86b9cdf777c0b",
                          "typeString": "literal_string \"Not currently awaiting signer setup\""
                        }
                      ],
                      "id": 1438,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "5324:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5324:108:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1444,
                  "nodeType": "ExpressionStatement",
                  "src": "5324:108:3"
                },
                {
                  "assignments": [
                    1446
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1446,
                      "name": "_publicKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 1524,
                      "src": "5443:23:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1445,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5443:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1453,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1448,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "5498:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1449,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "keepAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3858,
                            "src": "5498:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1447,
                          "name": "IBondedECDSAKeep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11428,
                          "src": "5481:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IBondedECDSAKeep_$11428_$",
                            "typeString": "type(contract IBondedECDSAKeep)"
                          }
                        },
                        "id": 1450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5481:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBondedECDSAKeep_$11428",
                          "typeString": "contract IBondedECDSAKeep"
                        }
                      },
                      "id": 1451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getPublicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11383,
                      "src": "5481:45:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () view external returns (bytes memory)"
                      }
                    },
                    "id": 1452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5481:47:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5443:85:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1455,
                            "name": "_publicKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1446,
                            "src": "5559:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 1456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5559:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3634",
                          "id": 1457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5580:2:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_64_by_1",
                            "typeString": "int_const 64"
                          },
                          "value": "64"
                        },
                        "src": "5559:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7075626c6963206b6579206e6f7420736574206f72206e6f742036342d6279746573206c6f6e67",
                        "id": 1459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5596:41:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5198bb2a1ff1ffe68f6d10097276526057736055996b19392ac1a70345d5195a",
                          "typeString": "literal_string \"public key not set or not 64-bytes long\""
                        },
                        "value": "public key not set or not 64-bytes long"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5198bb2a1ff1ffe68f6d10097276526057736055996b19392ac1a70345d5195a",
                          "typeString": "literal_string \"public key not set or not 64-bytes long\""
                        }
                      ],
                      "id": 1454,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "5538:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5538:109:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1461,
                  "nodeType": "ExpressionStatement",
                  "src": "5538:109:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1462,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1435,
                        "src": "5658:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1464,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyX",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3864,
                      "src": "5658:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5700:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3332",
                              "id": 1468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5703:2:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1465,
                              "name": "_publicKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1446,
                              "src": "5683:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "slice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13281,
                            "src": "5683:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 1469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5683:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "toBytes32",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13400,
                        "src": "5683:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 1471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5683:35:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "5658:60:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1473,
                  "nodeType": "ExpressionStatement",
                  "src": "5658:60:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1474,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1435,
                        "src": "5728:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1476,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "signingGroupPubkeyY",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3866,
                      "src": "5728:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3332",
                              "id": 1479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5770:2:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "3332",
                              "id": 1480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5774:2:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              "value": "32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              },
                              {
                                "typeIdentifier": "t_rational_32_by_1",
                                "typeString": "int_const 32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1477,
                              "name": "_publicKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1446,
                              "src": "5753:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "slice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13281,
                            "src": "5753:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 1481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5753:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "toBytes32",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13400,
                        "src": "5753:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 1483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5753:36:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "5728:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1485,
                  "nodeType": "ExpressionStatement",
                  "src": "5728:61:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1487,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "5820:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1488,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signingGroupPubkeyY",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3866,
                            "src": "5820:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5854:1:3",
                                "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": 1489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5846:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 1491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5846:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5820:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1493,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "5876:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 1494,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signingGroupPubkeyX",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3864,
                            "src": "5876:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1496,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5910:1:3",
                                "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": 1495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5902:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 1497,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5902:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5876:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5820:92:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4b6565702072657475726e656420626164207075626b6579",
                        "id": 1500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5926:26:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ff90938c7094595e722035d933f1c2ab2af4ce3b705c9c3dd90aabd62e6083b5",
                          "typeString": "literal_string \"Keep returned bad pubkey\""
                        },
                        "value": "Keep returned bad pubkey"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ff90938c7094595e722035d933f1c2ab2af4ce3b705c9c3dd90aabd62e6083b5",
                          "typeString": "literal_string \"Keep returned bad pubkey\""
                        }
                      ],
                      "id": 1486,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "5799:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5799:163:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1502,
                  "nodeType": "ExpressionStatement",
                  "src": "5799:163:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1503,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1435,
                        "src": "5972:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1505,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "fundingProofTimerStart",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3862,
                      "src": "5972:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1506,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18350,
                        "src": "6000:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 1507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6000:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5972:43:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1509,
                  "nodeType": "ExpressionStatement",
                  "src": "5972:43:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1510,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1435,
                        "src": "6026:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1512,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAwaitingBTCFundingProof",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3642,
                      "src": "6026:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6026:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1514,
                  "nodeType": "ExpressionStatement",
                  "src": "6026:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1518,
                          "name": "_d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1435,
                          "src": "6090:2:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                            "typeString": "struct DepositUtils.Deposit storage pointer"
                          }
                        },
                        "id": 1519,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signingGroupPubkeyX",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3864,
                        "src": "6090:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1520,
                          "name": "_d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1435,
                          "src": "6114:2:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                            "typeString": "struct DepositUtils.Deposit storage pointer"
                          }
                        },
                        "id": 1521,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signingGroupPubkeyY",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3866,
                        "src": "6114:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1515,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1435,
                        "src": "6067:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1517,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logRegisteredPubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5225,
                      "src": "6067:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes32,bytes32)"
                      }
                    },
                    "id": 1522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6067:70:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1523,
                  "nodeType": "ExpressionStatement",
                  "src": "6067:70:3"
                }
              ]
            },
            "documentation": "@notice             we poll the Keep contract to retrieve our pubkey.\n @dev                We store the pubkey as 2 bytestrings, X and Y.\n @param  _d          Deposit storage pointer.\n @return             True if successful, otherwise revert.",
            "id": 1525,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "retrieveSignerPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1435,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1525,
                  "src": "5274:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1434,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5274:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5273:33:3"
            },
            "returnParameters": {
              "id": 1437,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5314:0:3"
            },
            "scope": 1757,
            "src": "5244:900:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1570,
              "nodeType": "Block",
              "src": "6662:462:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1531,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1527,
                            "src": "6693:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1532,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inAwaitingBTCFundingProof",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3468,
                          "src": "6693:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 1533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6693:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "46756e64696e672074696d656f757420686173206e6f742073746172746564",
                        "id": 1534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6737:33:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_711bda81c13cbfc66d7ae9e9086a745a6db419ab37c0875c5fbf970b950ccd9e",
                          "typeString": "literal_string \"Funding timeout has not started\""
                        },
                        "value": "Funding timeout has not started"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_711bda81c13cbfc66d7ae9e9086a745a6db419ab37c0875c5fbf970b950ccd9e",
                          "typeString": "literal_string \"Funding timeout has not started\""
                        }
                      ],
                      "id": 1530,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "6672:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6672:108:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1536,
                  "nodeType": "ExpressionStatement",
                  "src": "6672:108:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1538,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18350,
                            "src": "6811:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6811:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1543,
                                  "name": "TBTCConstants",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6757,
                                  "src": "6896:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TBTCConstants_$6757_$",
                                    "typeString": "type(library TBTCConstants)"
                                  }
                                },
                                "id": 1544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getFundingTimeout",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6732,
                                "src": "6896:31:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$",
                                  "typeString": "function () pure returns (uint256)"
                                }
                              },
                              "id": 1545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6896:33:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1540,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1527,
                                "src": "6845:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 1541,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "fundingProofTimerStart",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3862,
                              "src": "6845:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1542,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16749,
                            "src": "6845:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 1546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6845:102:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6811:136:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "46756e64696e672074696d656f757420686173206e6f7420656c61707365642e",
                        "id": 1548,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6961:34:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_23dc769f64ec0bfcf4947d25cf0a7fe7f1a7e3ef54e5b7fc295c3abdc0c0f8f0",
                          "typeString": "literal_string \"Funding timeout has not elapsed.\""
                        },
                        "value": "Funding timeout has not elapsed."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_23dc769f64ec0bfcf4947d25cf0a7fe7f1a7e3ef54e5b7fc295c3abdc0c0f8f0",
                          "typeString": "literal_string \"Funding timeout has not elapsed.\""
                        }
                      ],
                      "id": 1537,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "6790:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6790:215:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1550,
                  "nodeType": "ExpressionStatement",
                  "src": "6790:215:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1551,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1527,
                        "src": "7015:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1553,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFailedSetup",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3657,
                      "src": "7015:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7015:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1555,
                  "nodeType": "ExpressionStatement",
                  "src": "7015:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1556,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1527,
                        "src": "7044:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1558,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logSetupFailed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5245,
                      "src": "7044:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7044:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1560,
                  "nodeType": "ExpressionStatement",
                  "src": "7044:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1561,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1527,
                        "src": "7074:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1563,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "closeKeep",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3911,
                      "src": "7074:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7074:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1565,
                  "nodeType": "ExpressionStatement",
                  "src": "7074:14:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1567,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1527,
                        "src": "7114:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      ],
                      "id": 1566,
                      "name": "fundingTeardown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1198,
                      "src": "7098:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7098:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1569,
                  "nodeType": "ExpressionStatement",
                  "src": "7098:19:3"
                }
              ]
            },
            "documentation": "@notice Anyone may notify the contract that the funder has failed to\n         prove that they have sent BTC in time.\n @dev This is considered a funder fault, and the funder's payment for\n      opening the deposit is not refunded. Reverts if the funding timeout\n      has not yet elapsed, or if the deposit is not currently awaiting\n      funding proof.\n @param _d Deposit storage pointer.",
            "id": 1571,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "notifyFundingTimedOut",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1527,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1571,
                  "src": "6620:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1526,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "6620:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6619:33:3"
            },
            "returnParameters": {
              "id": 1529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6662:0:3"
            },
            "scope": 1757,
            "src": "6589:535:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1591,
              "nodeType": "Block",
              "src": "7960:196:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1579,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1573,
                            "src": "8035:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1580,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inFailedSetup",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3484,
                          "src": "8035:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 1581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8035:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546865206465706f73697420686173206e6f74206661696c65642066756e64696e67",
                        "id": 1582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8055:36:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_05a9ca867998b52d3e69846b7ea1fb6c1524be62e1713e23c9dd66499ceb29d4",
                          "typeString": "literal_string \"The deposit has not failed funding\""
                        },
                        "value": "The deposit has not failed funding"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_05a9ca867998b52d3e69846b7ea1fb6c1524be62e1713e23c9dd66499ceb29d4",
                          "typeString": "literal_string \"The deposit has not failed funding\""
                        }
                      ],
                      "id": 1578,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "8027:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8027:65:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1584,
                  "nodeType": "ExpressionStatement",
                  "src": "8027:65:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1588,
                        "name": "_abortOutputScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1575,
                        "src": "8130:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1585,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1573,
                        "src": "8103:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1587,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logFunderRequestedAbort",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5268,
                      "src": "8103:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes_memory_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes memory)"
                      }
                    },
                    "id": 1589,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8103:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1590,
                  "nodeType": "ExpressionStatement",
                  "src": "8103:46:3"
                }
              ]
            },
            "documentation": "@notice Requests a funder abort for a failed-funding deposit; that is,\n         requests return of a sent UTXO to `_abortOutputScript`. This can\n         be used for example when a UTXO is sent that is the wrong size\n         for the lot. Must be called after setup fails for any reason,\n         and imposes no requirement or incentive on the signing group to\n         return the UTXO.\n @dev This is a self-admitted funder fault, and should only be callable\n      by the TDT holder.\n @param _d Deposit storage pointer.\n @param _abortOutputScript The output script the funder wishes to request\n        a return of their UTXO to.",
            "id": 1592,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "requestFunderAbort",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1573,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1592,
                  "src": "7874:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1572,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "7874:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1575,
                  "name": "_abortOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 1592,
                  "src": "7915:31:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1574,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7915:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7864:88:3"
            },
            "returnParameters": {
              "id": 1577,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7960:0:3"
            },
            "scope": 1757,
            "src": "7837:319:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1658,
              "nodeType": "Block",
              "src": "9009:611:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1608,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1594,
                            "src": "9097:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1609,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inAwaitingBTCFundingProof",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3468,
                          "src": "9097:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 1610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9097:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5369676e657220667261756420647572696e672066756e64696e6720666c6f77206f6e6c7920617661696c61626c65207768696c65206177616974696e672066756e64696e67",
                        "id": 1611,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9141:72:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_84693089109c726236c65bf5003f2f123b9d7da88bc826a149f83da88446a404",
                          "typeString": "literal_string \"Signer fraud during funding flow only available while awaiting funding\""
                        },
                        "value": "Signer fraud during funding flow only available while awaiting funding"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_84693089109c726236c65bf5003f2f123b9d7da88bc826a149f83da88446a404",
                          "typeString": "literal_string \"Signer fraud during funding flow only available while awaiting funding\""
                        }
                      ],
                      "id": 1607,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9076:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1612,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9076:147:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1613,
                  "nodeType": "ExpressionStatement",
                  "src": "9076:147:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1617,
                        "name": "_v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1596,
                        "src": "9258:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1618,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1598,
                        "src": "9262:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1619,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1600,
                        "src": "9266:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1620,
                        "name": "_signedDigest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1602,
                        "src": "9270:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1621,
                        "name": "_preimage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1604,
                        "src": "9285:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1614,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1594,
                        "src": "9234:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1616,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "submitSignatureFraud",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1833,
                      "src": "9234:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,uint8,bytes32,bytes32,bytes32,bytes memory)"
                      }
                    },
                    "id": 1622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9234:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1623,
                  "nodeType": "ExpressionStatement",
                  "src": "9234:61:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1624,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1594,
                        "src": "9305:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1626,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logFraudDuringSetup",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5288,
                      "src": "9305:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9305:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1628,
                  "nodeType": "ExpressionStatement",
                  "src": "9305:24:3"
                },
                {
                  "assignments": [
                    1630
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1630,
                      "name": "_seized",
                      "nodeType": "VariableDeclaration",
                      "scope": 1658,
                      "src": "9424:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1629,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9424:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1634,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1631,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1594,
                        "src": "9442:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1632,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "seizeSignerBonds",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4698,
                      "src": "9442:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer) returns (uint256)"
                      }
                    },
                    "id": 1633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9442:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9424:39:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1638,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1594,
                            "src": "9493:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1639,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "depositOwner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4604,
                          "src": "9493:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_address_payable_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (address payable)"
                          }
                        },
                        "id": 1640,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9493:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1641,
                        "name": "_seized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1630,
                        "src": "9512:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1635,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1594,
                        "src": "9473:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1637,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enableWithdrawal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4722,
                      "src": "9473:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                      }
                    },
                    "id": 1642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9473:47:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1643,
                  "nodeType": "ExpressionStatement",
                  "src": "9473:47:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1645,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1594,
                        "src": "9552:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      ],
                      "id": 1644,
                      "name": "fundingFraudTeardown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1240,
                      "src": "9531:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9531:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1647,
                  "nodeType": "ExpressionStatement",
                  "src": "9531:24:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1648,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1594,
                        "src": "9565:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1650,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFailedSetup",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3657,
                      "src": "9565:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9565:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1652,
                  "nodeType": "ExpressionStatement",
                  "src": "9565:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1653,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1594,
                        "src": "9594:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1655,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logSetupFailed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5245,
                      "src": "9594:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9594:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1657,
                  "nodeType": "ExpressionStatement",
                  "src": "9594:19:3"
                }
              ]
            },
            "documentation": "@notice                 Anyone can provide a signature that was not requested to prove fraud during funding.\n @dev                    Calls out to the keep to verify if there was fraud.\n @param  _d              Deposit storage pointer.\n @param  _v              Signature recovery value.\n @param  _r              Signature R value.\n @param  _s              Signature S value.\n @param _signedDigest    The digest signed by the signature vrs tuple.\n @param _preimage        The sha256 preimage of the digest.\n @return                 True if successful, otherwise revert.",
            "id": 1659,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "provideFundingECDSAFraudProof",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1594,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1659,
                  "src": "8843:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1593,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "8843:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1596,
                  "name": "_v",
                  "nodeType": "VariableDeclaration",
                  "scope": 1659,
                  "src": "8884:8:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1595,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "8884:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1598,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 1659,
                  "src": "8902:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1597,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8902:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1600,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 1659,
                  "src": "8922:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1599,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8922:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1602,
                  "name": "_signedDigest",
                  "nodeType": "VariableDeclaration",
                  "scope": 1659,
                  "src": "8942:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1601,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8942:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1604,
                  "name": "_preimage",
                  "nodeType": "VariableDeclaration",
                  "scope": 1659,
                  "src": "8973:22:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1603,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8973:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8833:168:3"
            },
            "returnParameters": {
              "id": 1606,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9009:0:3"
            },
            "scope": 1757,
            "src": "8795:825:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1755,
              "nodeType": "Block",
              "src": "11168:1026:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1681,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1661,
                            "src": "11244:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 1682,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inAwaitingBTCFundingProof",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3468,
                          "src": "11244:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$returns$_t_bool_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                            "typeString": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                          }
                        },
                        "id": 1683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11244:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f74206177616974696e672066756e64696e67",
                        "id": 1684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11276:22:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a4bc860fa5eaf93320e081bf13ff5eaf94c51aa2ec29146b59ffe42e0ed01a43",
                          "typeString": "literal_string \"Not awaiting funding\""
                        },
                        "value": "Not awaiting funding"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a4bc860fa5eaf93320e081bf13ff5eaf94c51aa2ec29146b59ffe42e0ed01a43",
                          "typeString": "literal_string \"Not awaiting funding\""
                        }
                      ],
                      "id": 1680,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "11236:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1685,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11236:63:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1686,
                  "nodeType": "ExpressionStatement",
                  "src": "11236:63:3"
                },
                {
                  "assignments": [
                    1688
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1688,
                      "name": "_valueBytes",
                      "nodeType": "VariableDeclaration",
                      "scope": 1755,
                      "src": "11310:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      },
                      "typeName": {
                        "id": 1687,
                        "name": "bytes8",
                        "nodeType": "ElementaryTypeName",
                        "src": "11310:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1689,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11310:18:3"
                },
                {
                  "assignments": [
                    1691
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1691,
                      "name": "_utxoOutpoint",
                      "nodeType": "VariableDeclaration",
                      "scope": 1755,
                      "src": "11338:26:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1690,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "11338:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1692,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11338:26:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1693,
                          "name": "_valueBytes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1688,
                          "src": "11376:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1694,
                          "name": "_utxoOutpoint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1691,
                          "src": "11389:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "id": 1695,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "11375:28:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes8_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(bytes8,bytes memory)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1698,
                          "name": "_txVersion",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1663,
                          "src": "11454:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1699,
                          "name": "_txInputVector",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1665,
                          "src": "11478:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1700,
                          "name": "_txOutputVector",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1667,
                          "src": "11506:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1701,
                          "name": "_txLocktime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1669,
                          "src": "11535:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1702,
                          "name": "_fundingOutputIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1671,
                          "src": "11560:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1703,
                          "name": "_merkleProof",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1673,
                          "src": "11593:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1704,
                          "name": "_txIndexInBlock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1675,
                          "src": "11619:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1705,
                          "name": "_bitcoinHeaders",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1677,
                          "src": "11648:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1696,
                          "name": "_d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1661,
                          "src": "11406:2:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                            "typeString": "struct DepositUtils.Deposit storage pointer"
                          }
                        },
                        "id": 1697,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "validateAndParseFundingSPVProof",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4237,
                        "src": "11406:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes4_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes4_$_t_uint8_$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes8_$_t_bytes_memory_ptr_$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                          "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes4,bytes memory,bytes memory,bytes4,uint8,bytes memory,uint256,bytes memory) view returns (bytes8,bytes memory)"
                        }
                      },
                      "id": 1706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11406:267:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_bytes8_$_t_bytes_memory_ptr_$",
                        "typeString": "tuple(bytes8,bytes memory)"
                      }
                    },
                    "src": "11375:298:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1708,
                  "nodeType": "ExpressionStatement",
                  "src": "11375:298:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1709,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1661,
                        "src": "11758:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1711,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "utxoValueBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3880,
                      "src": "11758:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1712,
                      "name": "_valueBytes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1688,
                      "src": "11778:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes8",
                        "typeString": "bytes8"
                      }
                    },
                    "src": "11758:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "id": 1714,
                  "nodeType": "ExpressionStatement",
                  "src": "11758:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1715,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1661,
                        "src": "11799:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1717,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "utxoOutpoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3884,
                      "src": "11799:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1718,
                      "name": "_utxoOutpoint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1691,
                      "src": "11817:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "11799:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 1720,
                  "nodeType": "ExpressionStatement",
                  "src": "11799:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1721,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1661,
                        "src": "11840:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1723,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "fundedAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3882,
                      "src": "11840:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1724,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18350,
                        "src": "11854:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 1725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11854:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11840:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1727,
                  "nodeType": "ExpressionStatement",
                  "src": "11840:29:3"
                },
                {
                  "assignments": [
                    1729
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1729,
                      "name": "_txid",
                      "nodeType": "VariableDeclaration",
                      "scope": 1755,
                      "src": "11880:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1728,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11880:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1739,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1732,
                            "name": "_txVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1663,
                            "src": "11959:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1733,
                            "name": "_txInputVector",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1665,
                            "src": "11987:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1734,
                            "name": "_txOutputVector",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1667,
                            "src": "12019:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1735,
                            "name": "_txLocktime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1669,
                            "src": "12052:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1730,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18347,
                            "src": "11908:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11908:33:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1736,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11908:169:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "hash256",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11851,
                      "src": "11908:194:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11908:196:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11880:224:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1741,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1661,
                        "src": "12131:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      ],
                      "id": 1740,
                      "name": "fundingTeardown",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1198,
                      "src": "12115:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12115:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1743,
                  "nodeType": "ExpressionStatement",
                  "src": "12115:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1744,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1661,
                        "src": "12144:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1746,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setActive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3672,
                      "src": "12144:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer)"
                      }
                    },
                    "id": 1747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12144:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1748,
                  "nodeType": "ExpressionStatement",
                  "src": "12144:14:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1752,
                        "name": "_txid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1729,
                        "src": "12181:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1749,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1661,
                        "src": "12168:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 1751,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logFunded",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5311,
                      "src": "12168:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Deposit_$3893_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_struct$_Deposit_$3893_storage_ptr_$",
                        "typeString": "function (struct DepositUtils.Deposit storage pointer,bytes32)"
                      }
                    },
                    "id": 1753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12168:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1754,
                  "nodeType": "ExpressionStatement",
                  "src": "12168:19:3"
                }
              ]
            },
            "documentation": "@notice                     Anyone may notify the deposit of a funding proof to activate the deposit.\n                             This is the happy-path of the funding flow. It means that we have succeeded.\n @dev                        Takes a pre-parsed transaction and calculates values needed to verify funding.\n @param  _d                  Deposit storage pointer.\n @param _txVersion           Transaction version number (4-byte LE).\n @param _txInputVector       All transaction inputs prepended by the number of inputs encoded as a VarInt, max 0xFC(252) inputs.\n @param _txOutputVector      All transaction outputs prepended by the number of outputs encoded as a VarInt, max 0xFC(252) outputs.\n @param _txLocktime          Final 4 bytes of the transaction.\n @param _fundingOutputIndex  Index of funding output in _txOutputVector (0-indexed).\n @param _merkleProof         The merkle proof of transaction inclusion in a block.\n @param _txIndexInBlock      Transaction index in the block (0-indexed).\n @param _bitcoinHeaders      Single bytestring of 80-byte bitcoin headers, lowest height first.",
            "id": 1756,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "provideBTCFundingProof",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1678,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1661,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "10852:31:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1660,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "10852:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1663,
                  "name": "_txVersion",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "10893:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1662,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "10893:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1665,
                  "name": "_txInputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "10920:27:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1664,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10920:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1667,
                  "name": "_txOutputVector",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "10957:28:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1666,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10957:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1669,
                  "name": "_txLocktime",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "10995:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1668,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "10995:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1671,
                  "name": "_fundingOutputIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "11023:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 1670,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "11023:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1673,
                  "name": "_merkleProof",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "11058:25:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1672,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11058:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1675,
                  "name": "_txIndexInBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "11093:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1674,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11093:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1677,
                  "name": "_bitcoinHeaders",
                  "nodeType": "VariableDeclaration",
                  "scope": 1756,
                  "src": "11126:28:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1676,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11126:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10842:318:3"
            },
            "returnParameters": {
              "id": 1679,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11168:0:3"
            },
            "scope": 1757,
            "src": "10811:1383:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1758,
        "src": "694:11502:3"
      }
    ],
    "src": "0:12197:3"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositFunding.sol",
      "exportedSymbols": {
        "DepositFunding": [
          1757
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 1136,
        "name": "PragmaDirective",
        "src": "0:23:3"
      },
      {
        "attributes": {
          "SourceUnit": 13433,
          "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
          "file": "@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1137,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1138,
        "name": "ImportDirective",
        "src": "25:74:3"
      },
      {
        "attributes": {
          "SourceUnit": 13217,
          "absolutePath": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
          "file": "@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1139,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1140,
        "name": "ImportDirective",
        "src": "100:74:3"
      },
      {
        "attributes": {
          "SourceUnit": 11429,
          "absolutePath": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
          "file": "@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1141,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1142,
        "name": "ImportDirective",
        "src": "175:99:3"
      },
      {
        "attributes": {
          "SourceUnit": 16856,
          "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1143,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1144,
        "name": "ImportDirective",
        "src": "275:75:3"
      },
      {
        "attributes": {
          "SourceUnit": 8562,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol",
          "file": "../system/TBTCToken.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1145,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1146,
        "name": "ImportDirective",
        "src": "351:50:3"
      },
      {
        "attributes": {
          "SourceUnit": 5104,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
          "file": "./DepositUtils.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1147,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1148,
        "name": "ImportDirective",
        "src": "402:48:3"
      },
      {
        "attributes": {
          "SourceUnit": 2331,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositLiquidation.sol",
          "file": "./DepositLiquidation.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1149,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1150,
        "name": "ImportDirective",
        "src": "451:60:3"
      },
      {
        "attributes": {
          "SourceUnit": 3779,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol",
          "file": "./DepositStates.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1151,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1152,
        "name": "ImportDirective",
        "src": "512:50:3"
      },
      {
        "attributes": {
          "SourceUnit": 5419,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol",
          "file": "./OutsourceDepositLogging.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1153,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1154,
        "name": "ImportDirective",
        "src": "563:70:3"
      },
      {
        "attributes": {
          "SourceUnit": 6758,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol",
          "file": "../system/TBTCConstants.sol",
          "scope": 1758,
          "symbolAliases": [
            {
              "foreign": 1155,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 1156,
        "name": "ImportDirective",
        "src": "634:58:3"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            1757
          ],
          "name": "DepositFunding",
          "scope": 1758
        },
        "children": [
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 16855,
                  "type": "library SafeMath"
                },
                "id": 1157,
                "name": "UserDefinedTypeName",
                "src": "729:8:3"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 1158,
                "name": "ElementaryTypeName",
                "src": "742:7:3"
              }
            ],
            "id": 1159,
            "name": "UsingForDirective",
            "src": "723:27:3"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 16855,
                  "type": "library SafeMath"
                },
                "id": 1160,
                "name": "UserDefinedTypeName",
                "src": "761:8:3"
              },
              {
                "attributes": {
                  "name": "uint64",
                  "type": "uint64"
                },
                "id": 1161,
                "name": "ElementaryTypeName",
                "src": "774:6:3"
              }
            ],
            "id": 1162,
            "name": "UsingForDirective",
            "src": "755:26:3"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BTCUtils",
                  "referencedDeclaration": 13216,
                  "type": "library BTCUtils"
                },
                "id": 1163,
                "name": "UserDefinedTypeName",
                "src": "792:8:3"
              },
              {
                "attributes": {
                  "name": "bytes",
                  "type": "bytes"
                },
                "id": 1164,
                "name": "ElementaryTypeName",
                "src": "805:5:3"
              }
            ],
            "id": 1165,
            "name": "UsingForDirective",
            "src": "786:25:3"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BytesLib",
                  "referencedDeclaration": 13432,
                  "type": "library BytesLib"
                },
                "id": 1166,
                "name": "UserDefinedTypeName",
                "src": "822:8:3"
              },
              {
                "attributes": {
                  "name": "bytes",
                  "type": "bytes"
                },
                "id": 1167,
                "name": "ElementaryTypeName",
                "src": "835:5:3"
              }
            ],
            "id": 1168,
            "name": "UsingForDirective",
            "src": "816:25:3"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils",
                  "referencedDeclaration": 5103,
                  "type": "library DepositUtils"
                },
                "id": 1169,
                "name": "UserDefinedTypeName",
                "src": "853:12:3"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils.Deposit",
                  "referencedDeclaration": 3893,
                  "type": "struct DepositUtils.Deposit"
                },
                "id": 1170,
                "name": "UserDefinedTypeName",
                "src": "870:20:3"
              }
            ],
            "id": 1171,
            "name": "UsingForDirective",
            "src": "847:44:3"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositStates",
                  "referencedDeclaration": 3778,
                  "type": "library DepositStates"
                },
                "id": 1172,
                "name": "UserDefinedTypeName",
                "src": "902:13:3"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils.Deposit",
                  "referencedDeclaration": 3893,
                  "type": "struct DepositUtils.Deposit"
                },
                "id": 1173,
                "name": "UserDefinedTypeName",
                "src": "920:20:3"
              }
            ],
            "id": 1174,
            "name": "UsingForDirective",
            "src": "896:45:3"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositLiquidation",
                  "referencedDeclaration": 2330,
                  "type": "library DepositLiquidation"
                },
                "id": 1175,
                "name": "UserDefinedTypeName",
                "src": "952:18:3"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils.Deposit",
                  "referencedDeclaration": 3893,
                  "type": "struct DepositUtils.Deposit"
                },
                "id": 1176,
                "name": "UserDefinedTypeName",
                "src": "975:20:3"
              }
            ],
            "id": 1177,
            "name": "UsingForDirective",
            "src": "946:50:3"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "OutsourceDepositLogging",
                  "referencedDeclaration": 5418,
                  "type": "library OutsourceDepositLogging"
                },
                "id": 1178,
                "name": "UserDefinedTypeName",
                "src": "1007:23:3"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DepositUtils.Deposit",
                  "referencedDeclaration": 3893,
                  "type": "struct DepositUtils.Deposit"
                },
                "id": 1179,
                "name": "UserDefinedTypeName",
                "src": "1035:20:3"
              }
            ],
            "id": 1180,
            "name": "UsingForDirective",
            "src": "1001:55:3"
          },
          {
            "attributes": {
              "documentation": "@notice     Deletes state after funding.\n @dev        This is called when we go to ACTIVE or setup fails without fraud.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "fundingTeardown",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1198,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1181,
                        "name": "UserDefinedTypeName",
                        "src": "1222:20:3"
                      }
                    ],
                    "id": 1182,
                    "name": "VariableDeclaration",
                    "src": "1222:31:3"
                  }
                ],
                "id": 1183,
                "name": "ParameterList",
                "src": "1221:33:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1184,
                "name": "ParameterList",
                "src": "1264:0:3"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupRequestedAt",
                              "referencedDeclaration": 3860,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1182,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1185,
                                "name": "Identifier",
                                "src": "1274:2:3"
                              }
                            ],
                            "id": 1187,
                            "name": "MemberAccess",
                            "src": "1274:26:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1188,
                            "name": "Literal",
                            "src": "1303:1:3"
                          }
                        ],
                        "id": 1189,
                        "name": "Assignment",
                        "src": "1274:30:3"
                      }
                    ],
                    "id": 1190,
                    "name": "ExpressionStatement",
                    "src": "1274:30:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "fundingProofTimerStart",
                              "referencedDeclaration": 3862,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1182,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1191,
                                "name": "Identifier",
                                "src": "1314:2:3"
                              }
                            ],
                            "id": 1193,
                            "name": "MemberAccess",
                            "src": "1314:25:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1194,
                            "name": "Literal",
                            "src": "1342:1:3"
                          }
                        ],
                        "id": 1195,
                        "name": "Assignment",
                        "src": "1314:29:3"
                      }
                    ],
                    "id": 1196,
                    "name": "ExpressionStatement",
                    "src": "1314:29:3"
                  }
                ],
                "id": 1197,
                "name": "Block",
                "src": "1264:86:3"
              }
            ],
            "id": 1198,
            "name": "FunctionDefinition",
            "src": "1197:153:3"
          },
          {
            "attributes": {
              "documentation": "@notice     Deletes state after the funding ECDSA fraud process.\n @dev        This is only called as we transition to setup failed.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "fundingFraudTeardown",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1240,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1199,
                        "name": "UserDefinedTypeName",
                        "src": "1533:20:3"
                      }
                    ],
                    "id": 1200,
                    "name": "VariableDeclaration",
                    "src": "1533:31:3"
                  }
                ],
                "id": 1201,
                "name": "ParameterList",
                "src": "1532:33:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1202,
                "name": "ParameterList",
                "src": "1575:0:3"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "keepAddress",
                              "referencedDeclaration": 3858,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1200,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1203,
                                "name": "Identifier",
                                "src": "1585:2:3"
                              }
                            ],
                            "id": 1205,
                            "name": "MemberAccess",
                            "src": "1585:14:3"
                          },
                          {
                            "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": 1206,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1602:7:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1207,
                                "name": "Literal",
                                "src": "1610:1:3"
                              }
                            ],
                            "id": 1208,
                            "name": "FunctionCall",
                            "src": "1602:10:3"
                          }
                        ],
                        "id": 1209,
                        "name": "Assignment",
                        "src": "1585:27:3"
                      }
                    ],
                    "id": 1210,
                    "name": "ExpressionStatement",
                    "src": "1585:27:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupRequestedAt",
                              "referencedDeclaration": 3860,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1200,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1211,
                                "name": "Identifier",
                                "src": "1622:2:3"
                              }
                            ],
                            "id": 1213,
                            "name": "MemberAccess",
                            "src": "1622:26:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1214,
                            "name": "Literal",
                            "src": "1651:1:3"
                          }
                        ],
                        "id": 1215,
                        "name": "Assignment",
                        "src": "1622:30:3"
                      }
                    ],
                    "id": 1216,
                    "name": "ExpressionStatement",
                    "src": "1622:30:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "fundingProofTimerStart",
                              "referencedDeclaration": 3862,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1200,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1217,
                                "name": "Identifier",
                                "src": "1662:2:3"
                              }
                            ],
                            "id": 1219,
                            "name": "MemberAccess",
                            "src": "1662:25:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1220,
                            "name": "Literal",
                            "src": "1690:1:3"
                          }
                        ],
                        "id": 1221,
                        "name": "Assignment",
                        "src": "1662:29:3"
                      }
                    ],
                    "id": 1222,
                    "name": "ExpressionStatement",
                    "src": "1662:29:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupPubkeyX",
                              "referencedDeclaration": 3864,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1200,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1223,
                                "name": "Identifier",
                                "src": "1701:2:3"
                              }
                            ],
                            "id": 1225,
                            "name": "MemberAccess",
                            "src": "1701:22:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "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(bytes32)",
                                  "value": "bytes32"
                                },
                                "id": 1226,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1726:7:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1227,
                                "name": "Literal",
                                "src": "1734:1:3"
                              }
                            ],
                            "id": 1228,
                            "name": "FunctionCall",
                            "src": "1726:10:3"
                          }
                        ],
                        "id": 1229,
                        "name": "Assignment",
                        "src": "1701:35:3"
                      }
                    ],
                    "id": 1230,
                    "name": "ExpressionStatement",
                    "src": "1701:35:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupPubkeyY",
                              "referencedDeclaration": 3866,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1200,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1231,
                                "name": "Identifier",
                                "src": "1746:2:3"
                              }
                            ],
                            "id": 1233,
                            "name": "MemberAccess",
                            "src": "1746:22:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "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(bytes32)",
                                  "value": "bytes32"
                                },
                                "id": 1234,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1771:7:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 1235,
                                "name": "Literal",
                                "src": "1779:1:3"
                              }
                            ],
                            "id": 1236,
                            "name": "FunctionCall",
                            "src": "1771:10:3"
                          }
                        ],
                        "id": 1237,
                        "name": "Assignment",
                        "src": "1746:35:3"
                      }
                    ],
                    "id": 1238,
                    "name": "ExpressionStatement",
                    "src": "1746:35:3"
                  }
                ],
                "id": 1239,
                "name": "Block",
                "src": "1575:213:3"
              }
            ],
            "id": 1240,
            "name": "FunctionDefinition",
            "src": "1503:285:3"
          },
          {
            "attributes": {
              "documentation": "@notice Internally called function to set up a newly created Deposit\n         instance. This should not be called by developers, use\n         `DepositFactory.createDeposit` to create a new deposit.\n @dev If called directly, the transaction will revert since the call will\n      be executed on an already set-up instance.\n @param _d Deposit storage pointer.\n @param _lotSizeSatoshis Lot size in satoshis.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "initialize",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1360,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1241,
                        "name": "UserDefinedTypeName",
                        "src": "2277:20:3"
                      }
                    ],
                    "id": 1242,
                    "name": "VariableDeclaration",
                    "src": "2277:31:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_lotSizeSatoshis",
                      "scope": 1360,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 1243,
                        "name": "ElementaryTypeName",
                        "src": "2318:6:3"
                      }
                    ],
                    "id": 1244,
                    "name": "VariableDeclaration",
                    "src": "2318:23:3"
                  }
                ],
                "id": 1245,
                "name": "ParameterList",
                "src": "2267:80:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1246,
                "name": "ParameterList",
                "src": "2355:0:3"
              },
              {
                "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_e0945cc76e7f56b732824a3e200ae2e7edfbd7dcb5a6ae3438aa876dea4a21c3",
                                  "typeString": "literal_string \"New deposits aren't allowed.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1247,
                            "name": "Identifier",
                            "src": "2365:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getAllowNewDeposits",
                                  "referencedDeclaration": 5474,
                                  "type": "function () view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tbtcSystem",
                                      "referencedDeclaration": 3828,
                                      "type": "contract ITBTCSystem"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1242,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1248,
                                        "name": "Identifier",
                                        "src": "2386:2:3"
                                      }
                                    ],
                                    "id": 1249,
                                    "name": "MemberAccess",
                                    "src": "2386:13:3"
                                  }
                                ],
                                "id": 1250,
                                "name": "MemberAccess",
                                "src": "2386:33:3"
                              }
                            ],
                            "id": 1251,
                            "name": "FunctionCall",
                            "src": "2386:35:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6577206465706f73697473206172656e277420616c6c6f7765642e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"New deposits aren't allowed.\"",
                              "value": "New deposits aren't allowed."
                            },
                            "id": 1252,
                            "name": "Literal",
                            "src": "2435:30:3"
                          }
                        ],
                        "id": 1253,
                        "name": "FunctionCall",
                        "src": "2365:110:3"
                      }
                    ],
                    "id": 1254,
                    "name": "ExpressionStatement",
                    "src": "2365:110:3"
                  },
                  {
                    "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_b5dbce7b0bb4f789e3075fed8f2d514968e1183258a67ed5fbb62b32ecb10de2",
                                  "typeString": "literal_string \"Deposit setup already requested\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1255,
                            "name": "Identifier",
                            "src": "2485:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inStart",
                                  "referencedDeclaration": 3436,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1242,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1256,
                                    "name": "Identifier",
                                    "src": "2493:2:3"
                                  }
                                ],
                                "id": 1257,
                                "name": "MemberAccess",
                                "src": "2493:10:3"
                              }
                            ],
                            "id": 1258,
                            "name": "FunctionCall",
                            "src": "2493:12:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4465706f73697420736574757020616c726561647920726571756573746564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Deposit setup already requested\"",
                              "value": "Deposit setup already requested"
                            },
                            "id": 1259,
                            "name": "Literal",
                            "src": "2507:33:3"
                          }
                        ],
                        "id": 1260,
                        "name": "FunctionCall",
                        "src": "2485:56:3"
                      }
                    ],
                    "id": 1261,
                    "name": "ExpressionStatement",
                    "src": "2485:56:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "lotSizeSatoshis",
                              "referencedDeclaration": 3838,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1262,
                                "name": "Identifier",
                                "src": "2552:2:3"
                              }
                            ],
                            "id": 1264,
                            "name": "MemberAccess",
                            "src": "2552:18:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1244,
                              "type": "uint64",
                              "value": "_lotSizeSatoshis"
                            },
                            "id": 1265,
                            "name": "Identifier",
                            "src": "2573:16:3"
                          }
                        ],
                        "id": 1266,
                        "name": "Assignment",
                        "src": "2552:37:3"
                      }
                    ],
                    "id": 1267,
                    "name": "ExpressionStatement",
                    "src": "2552:37:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "keepSetupFee",
                              "referencedDeclaration": 3850,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1268,
                                "name": "Identifier",
                                "src": "2600:2:3"
                              }
                            ],
                            "id": 1270,
                            "name": "MemberAccess",
                            "src": "2600:15:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getNewDepositFeeEstimate",
                                  "referencedDeclaration": 5469,
                                  "type": "function () view external returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tbtcSystem",
                                      "referencedDeclaration": 3828,
                                      "type": "contract ITBTCSystem"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1242,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1271,
                                        "name": "Identifier",
                                        "src": "2618:2:3"
                                      }
                                    ],
                                    "id": 1272,
                                    "name": "MemberAccess",
                                    "src": "2618:13:3"
                                  }
                                ],
                                "id": 1273,
                                "name": "MemberAccess",
                                "src": "2618:38:3"
                              }
                            ],
                            "id": 1274,
                            "name": "FunctionCall",
                            "src": "2618:40:3"
                          }
                        ],
                        "id": 1275,
                        "name": "Assignment",
                        "src": "2600:58:3"
                      }
                    ],
                    "id": 1276,
                    "name": "ExpressionStatement",
                    "src": "2600:58:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "keepAddress",
                              "referencedDeclaration": 3858,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1277,
                                "name": "Identifier",
                                "src": "3039:2:3"
                              }
                            ],
                            "id": 1279,
                            "name": "MemberAccess",
                            "src": "3039:14:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "function (uint64,uint256) payable external returns (address)",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "value",
                                      "referencedDeclaration": null,
                                      "type": "function (uint256) pure returns (function (uint64,uint256) payable external returns (address))"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "requestNewKeep",
                                          "referencedDeclaration": 5490,
                                          "type": "function (uint64,uint256) payable external returns (address)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "tbtcSystem",
                                              "referencedDeclaration": 3828,
                                              "type": "contract ITBTCSystem"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1242,
                                                  "type": "struct DepositUtils.Deposit storage pointer",
                                                  "value": "_d"
                                                },
                                                "id": 1280,
                                                "name": "Identifier",
                                                "src": "3056:2:3"
                                              }
                                            ],
                                            "id": 1281,
                                            "name": "MemberAccess",
                                            "src": "3056:13:3"
                                          }
                                        ],
                                        "id": 1282,
                                        "name": "MemberAccess",
                                        "src": "3056:28:3"
                                      }
                                    ],
                                    "id": 1283,
                                    "name": "MemberAccess",
                                    "src": "3056:34:3"
                                  },
                                  {
                                    "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": 1284,
                                        "name": "Identifier",
                                        "src": "3091:3:3"
                                      }
                                    ],
                                    "id": 1285,
                                    "name": "MemberAccess",
                                    "src": "3091:9:3"
                                  }
                                ],
                                "id": 1286,
                                "name": "FunctionCall",
                                "src": "3056:45:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1244,
                                  "type": "uint64",
                                  "value": "_lotSizeSatoshis"
                                },
                                "id": 1287,
                                "name": "Identifier",
                                "src": "3115:16:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "getDepositTerm",
                                      "referencedDeclaration": 6676,
                                      "type": "function () pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6757,
                                          "type": "type(library TBTCConstants)",
                                          "value": "TBTCConstants"
                                        },
                                        "id": 1288,
                                        "name": "Identifier",
                                        "src": "3145:13:3"
                                      }
                                    ],
                                    "id": 1289,
                                    "name": "MemberAccess",
                                    "src": "3145:28:3"
                                  }
                                ],
                                "id": 1290,
                                "name": "FunctionCall",
                                "src": "3145:30:3"
                              }
                            ],
                            "id": 1291,
                            "name": "FunctionCall",
                            "src": "3056:129:3"
                          }
                        ],
                        "id": 1292,
                        "name": "Assignment",
                        "src": "3039:146:3"
                      }
                    ],
                    "id": 1293,
                    "name": "ExpressionStatement",
                    "src": "3039:146:3"
                  },
                  {
                    "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_bfd1aac2f371e47d4c5966543c04f0605f70a97fbc02f53113e7e09beab160bf",
                                  "typeString": "literal_string \"Insufficient signer bonds to cover setup fee\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1294,
                            "name": "Identifier",
                            "src": "3196:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "fetchBondAmount",
                                      "referencedDeclaration": 4503,
                                      "type": "function (struct DepositUtils.Deposit storage pointer) view returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1242,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1295,
                                        "name": "Identifier",
                                        "src": "3217:2:3"
                                      }
                                    ],
                                    "id": 1296,
                                    "name": "MemberAccess",
                                    "src": "3217:18:3"
                                  }
                                ],
                                "id": 1297,
                                "name": "FunctionCall",
                                "src": "3217:20:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "keepSetupFee",
                                  "referencedDeclaration": 3850,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1242,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1298,
                                    "name": "Identifier",
                                    "src": "3241:2:3"
                                  }
                                ],
                                "id": 1299,
                                "name": "MemberAccess",
                                "src": "3241:15:3"
                              }
                            ],
                            "id": 1300,
                            "name": "BinaryOperation",
                            "src": "3217:39:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "496e73756666696369656e74207369676e657220626f6e647320746f20636f76657220736574757020666565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Insufficient signer bonds to cover setup fee\"",
                              "value": "Insufficient signer bonds to cover setup fee"
                            },
                            "id": 1301,
                            "name": "Literal",
                            "src": "3270:46:3"
                          }
                        ],
                        "id": 1302,
                        "name": "FunctionCall",
                        "src": "3196:130:3"
                      }
                    ],
                    "id": 1303,
                    "name": "ExpressionStatement",
                    "src": "3196:130:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signerFeeDivisor",
                              "referencedDeclaration": 3842,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1304,
                                "name": "Identifier",
                                "src": "3337:2:3"
                              }
                            ],
                            "id": 1306,
                            "name": "MemberAccess",
                            "src": "3337:19:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getSignerFeeDivisor",
                                  "referencedDeclaration": 5495,
                                  "type": "function () view external returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tbtcSystem",
                                      "referencedDeclaration": 3828,
                                      "type": "contract ITBTCSystem"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1242,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1307,
                                        "name": "Identifier",
                                        "src": "3359:2:3"
                                      }
                                    ],
                                    "id": 1308,
                                    "name": "MemberAccess",
                                    "src": "3359:13:3"
                                  }
                                ],
                                "id": 1309,
                                "name": "MemberAccess",
                                "src": "3359:33:3"
                              }
                            ],
                            "id": 1310,
                            "name": "FunctionCall",
                            "src": "3359:35:3"
                          }
                        ],
                        "id": 1311,
                        "name": "Assignment",
                        "src": "3337:57:3"
                      }
                    ],
                    "id": 1312,
                    "name": "ExpressionStatement",
                    "src": "3337:57:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "undercollateralizedThresholdPercent",
                              "referencedDeclaration": 3846,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1313,
                                "name": "Identifier",
                                "src": "3404:2:3"
                              }
                            ],
                            "id": 1315,
                            "name": "MemberAccess",
                            "src": "3404:38:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getUndercollateralizedThresholdPercent",
                                  "referencedDeclaration": 5505,
                                  "type": "function () view external returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tbtcSystem",
                                      "referencedDeclaration": 3828,
                                      "type": "contract ITBTCSystem"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1242,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1316,
                                        "name": "Identifier",
                                        "src": "3445:2:3"
                                      }
                                    ],
                                    "id": 1317,
                                    "name": "MemberAccess",
                                    "src": "3445:26:3"
                                  }
                                ],
                                "id": 1318,
                                "name": "MemberAccess",
                                "src": "3445:78:3"
                              }
                            ],
                            "id": 1319,
                            "name": "FunctionCall",
                            "src": "3445:80:3"
                          }
                        ],
                        "id": 1320,
                        "name": "Assignment",
                        "src": "3404:121:3"
                      }
                    ],
                    "id": 1321,
                    "name": "ExpressionStatement",
                    "src": "3404:121:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "severelyUndercollateralizedThresholdPercent",
                              "referencedDeclaration": 3848,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1322,
                                "name": "Identifier",
                                "src": "3535:2:3"
                              }
                            ],
                            "id": 1324,
                            "name": "MemberAccess",
                            "src": "3535:46:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getSeverelyUndercollateralizedThresholdPercent",
                                  "referencedDeclaration": 5510,
                                  "type": "function () view external returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tbtcSystem",
                                      "referencedDeclaration": 3828,
                                      "type": "contract ITBTCSystem"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1242,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1325,
                                        "name": "Identifier",
                                        "src": "3584:2:3"
                                      }
                                    ],
                                    "id": 1326,
                                    "name": "MemberAccess",
                                    "src": "3584:26:3"
                                  }
                                ],
                                "id": 1327,
                                "name": "MemberAccess",
                                "src": "3584:86:3"
                              }
                            ],
                            "id": 1328,
                            "name": "FunctionCall",
                            "src": "3584:88:3"
                          }
                        ],
                        "id": 1329,
                        "name": "Assignment",
                        "src": "3535:137:3"
                      }
                    ],
                    "id": 1330,
                    "name": "ExpressionStatement",
                    "src": "3535:137:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint16"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "initialCollateralizedPercent",
                              "referencedDeclaration": 3844,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1331,
                                "name": "Identifier",
                                "src": "3682:2:3"
                              }
                            ],
                            "id": 1333,
                            "name": "MemberAccess",
                            "src": "3682:31:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint16",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getInitialCollateralizedPercent",
                                  "referencedDeclaration": 5500,
                                  "type": "function () view external returns (uint16)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "tbtcSystem",
                                      "referencedDeclaration": 3828,
                                      "type": "contract ITBTCSystem"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1242,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1334,
                                        "name": "Identifier",
                                        "src": "3716:2:3"
                                      }
                                    ],
                                    "id": 1335,
                                    "name": "MemberAccess",
                                    "src": "3716:26:3"
                                  }
                                ],
                                "id": 1336,
                                "name": "MemberAccess",
                                "src": "3716:71:3"
                              }
                            ],
                            "id": 1337,
                            "name": "FunctionCall",
                            "src": "3716:73:3"
                          }
                        ],
                        "id": 1338,
                        "name": "Assignment",
                        "src": "3682:107:3"
                      }
                    ],
                    "id": 1339,
                    "name": "ExpressionStatement",
                    "src": "3682:107:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupRequestedAt",
                              "referencedDeclaration": 3860,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1340,
                                "name": "Identifier",
                                "src": "3799:2:3"
                              }
                            ],
                            "id": 1342,
                            "name": "MemberAccess",
                            "src": "3799:26:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 1343,
                                "name": "Identifier",
                                "src": "3828:5:3"
                              }
                            ],
                            "id": 1344,
                            "name": "MemberAccess",
                            "src": "3828:15:3"
                          }
                        ],
                        "id": 1345,
                        "name": "Assignment",
                        "src": "3799:44:3"
                      }
                    ],
                    "id": 1346,
                    "name": "ExpressionStatement",
                    "src": "3799:44:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setAwaitingSignerSetup",
                              "referencedDeclaration": 3627,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1347,
                                "name": "Identifier",
                                "src": "3854:2:3"
                              }
                            ],
                            "id": 1349,
                            "name": "MemberAccess",
                            "src": "3854:25:3"
                          }
                        ],
                        "id": 1350,
                        "name": "FunctionCall",
                        "src": "3854:27:3"
                      }
                    ],
                    "id": 1351,
                    "name": "ExpressionStatement",
                    "src": "3854:27:3"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logCreated",
                              "referencedDeclaration": 5132,
                              "type": "function (struct DepositUtils.Deposit storage pointer,address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1352,
                                "name": "Identifier",
                                "src": "3891:2:3"
                              }
                            ],
                            "id": 1354,
                            "name": "MemberAccess",
                            "src": "3891:13:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "keepAddress",
                              "referencedDeclaration": 3858,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1242,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1355,
                                "name": "Identifier",
                                "src": "3905:2:3"
                              }
                            ],
                            "id": 1356,
                            "name": "MemberAccess",
                            "src": "3905:14:3"
                          }
                        ],
                        "id": 1357,
                        "name": "FunctionCall",
                        "src": "3891:29:3"
                      }
                    ],
                    "id": 1358,
                    "name": "ExpressionStatement",
                    "src": "3891:29:3"
                  }
                ],
                "id": 1359,
                "name": "Block",
                "src": "2355:1572:3"
              }
            ],
            "id": 1360,
            "name": "FunctionDefinition",
            "src": "2248:1679:3"
          },
          {
            "attributes": {
              "documentation": "@notice     Anyone may notify the contract that signing group setup has timed out.\n @param  _d  Deposit storage pointer.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "notifySignerSetupFailed",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1433,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1361,
                        "name": "UserDefinedTypeName",
                        "src": "4102:20:3"
                      }
                    ],
                    "id": 1362,
                    "name": "VariableDeclaration",
                    "src": "4102:31:3"
                  }
                ],
                "id": 1363,
                "name": "ParameterList",
                "src": "4101:33:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1364,
                "name": "ParameterList",
                "src": "4144:0:3"
              },
              {
                "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_a92f1949cb38ece98dd4b18be5c21a4fac3878964357e097cdd519b99354aa78",
                                  "typeString": "literal_string \"Not awaiting setup\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1365,
                            "name": "Identifier",
                            "src": "4154:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inAwaitingSignerSetup",
                                  "referencedDeclaration": 3452,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1362,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1366,
                                    "name": "Identifier",
                                    "src": "4162:2:3"
                                  }
                                ],
                                "id": 1367,
                                "name": "MemberAccess",
                                "src": "4162:24:3"
                              }
                            ],
                            "id": 1368,
                            "name": "FunctionCall",
                            "src": "4162:26:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6f74206177616974696e67207365747570",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Not awaiting setup\"",
                              "value": "Not awaiting setup"
                            },
                            "id": 1369,
                            "name": "Literal",
                            "src": "4190:20:3"
                          }
                        ],
                        "id": 1370,
                        "name": "FunctionCall",
                        "src": "4154:57:3"
                      }
                    ],
                    "id": 1371,
                    "name": "ExpressionStatement",
                    "src": "4154:57:3"
                  },
                  {
                    "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_fab1e418dff90a3be73ef7a8e43ed13949aff02a83099649af6d7e097099b161",
                                  "typeString": "literal_string \"Signing group formation timeout not yet elapsed\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1372,
                            "name": "Identifier",
                            "src": "4221:7:3"
                          },
                          {
                            "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": "timestamp",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18350,
                                      "type": "block",
                                      "value": "block"
                                    },
                                    "id": 1373,
                                    "name": "Identifier",
                                    "src": "4242:5:3"
                                  }
                                ],
                                "id": 1374,
                                "name": "MemberAccess",
                                "src": "4242:15:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 16749,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "signingGroupRequestedAt",
                                          "referencedDeclaration": 3860,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1362,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 1375,
                                            "name": "Identifier",
                                            "src": "4276:2:3"
                                          }
                                        ],
                                        "id": 1376,
                                        "name": "MemberAccess",
                                        "src": "4276:26:3"
                                      }
                                    ],
                                    "id": 1377,
                                    "name": "MemberAccess",
                                    "src": "4276:30:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "getSigningGroupFormationTimeout",
                                          "referencedDeclaration": 6740,
                                          "type": "function () pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6757,
                                              "type": "type(library TBTCConstants)",
                                              "value": "TBTCConstants"
                                            },
                                            "id": 1378,
                                            "name": "Identifier",
                                            "src": "4328:13:3"
                                          }
                                        ],
                                        "id": 1379,
                                        "name": "MemberAccess",
                                        "src": "4328:45:3"
                                      }
                                    ],
                                    "id": 1380,
                                    "name": "FunctionCall",
                                    "src": "4328:47:3"
                                  }
                                ],
                                "id": 1381,
                                "name": "FunctionCall",
                                "src": "4276:117:3"
                              }
                            ],
                            "id": 1382,
                            "name": "BinaryOperation",
                            "src": "4242:151:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5369676e696e672067726f757020666f726d6174696f6e2074696d656f7574206e6f742079657420656c6170736564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Signing group formation timeout not yet elapsed\"",
                              "value": "Signing group formation timeout not yet elapsed"
                            },
                            "id": 1383,
                            "name": "Literal",
                            "src": "4407:49:3"
                          }
                        ],
                        "id": 1384,
                        "name": "FunctionCall",
                        "src": "4221:245:3"
                      }
                    ],
                    "id": 1385,
                    "name": "ExpressionStatement",
                    "src": "4221:245:3"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1387
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_seized",
                          "scope": 1432,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1386,
                            "name": "ElementaryTypeName",
                            "src": "4582:7:3"
                          }
                        ],
                        "id": 1387,
                        "name": "VariableDeclaration",
                        "src": "4582:15:3"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "seizeSignerBonds",
                              "referencedDeclaration": 4698,
                              "type": "function (struct DepositUtils.Deposit storage pointer) returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1362,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1388,
                                "name": "Identifier",
                                "src": "4600:2:3"
                              }
                            ],
                            "id": 1389,
                            "name": "MemberAccess",
                            "src": "4600:19:3"
                          }
                        ],
                        "id": 1390,
                        "name": "FunctionCall",
                        "src": "4600:21:3"
                      }
                    ],
                    "id": 1391,
                    "name": "VariableDeclarationStatement",
                    "src": "4582:39:3"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1387,
                              "type": "uint256",
                              "value": "_seized"
                            },
                            "id": 1392,
                            "name": "Identifier",
                            "src": "4636:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "keepSetupFee",
                              "referencedDeclaration": 3850,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1362,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1393,
                                "name": "Identifier",
                                "src": "4647:2:3"
                              }
                            ],
                            "id": 1394,
                            "name": "MemberAccess",
                            "src": "4647:15:3"
                          }
                        ],
                        "id": 1395,
                        "name": "BinaryOperation",
                        "src": "4636:26:3"
                      },
                      {
                        "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_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "enableWithdrawal",
                                      "referencedDeclaration": 4722,
                                      "type": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1362,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1396,
                                        "name": "Identifier",
                                        "src": "4738:2:3"
                                      }
                                    ],
                                    "id": 1398,
                                    "name": "MemberAccess",
                                    "src": "4738:19:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address payable",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "depositOwner",
                                          "referencedDeclaration": 4604,
                                          "type": "function (struct DepositUtils.Deposit storage pointer) view returns (address payable)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1362,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 1399,
                                            "name": "Identifier",
                                            "src": "4758:2:3"
                                          }
                                        ],
                                        "id": 1400,
                                        "name": "MemberAccess",
                                        "src": "4758:15:3"
                                      }
                                    ],
                                    "id": 1401,
                                    "name": "FunctionCall",
                                    "src": "4758:17:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "keepSetupFee",
                                      "referencedDeclaration": 3850,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1362,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1402,
                                        "name": "Identifier",
                                        "src": "4777:2:3"
                                      }
                                    ],
                                    "id": 1403,
                                    "name": "MemberAccess",
                                    "src": "4777:15:3"
                                  }
                                ],
                                "id": 1404,
                                "name": "FunctionCall",
                                "src": "4738:55:3"
                              }
                            ],
                            "id": 1405,
                            "name": "ExpressionStatement",
                            "src": "4738:55:3"
                          },
                          {
                            "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": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "pushFundsToKeepGroup",
                                      "referencedDeclaration": 4882,
                                      "type": "function (struct DepositUtils.Deposit storage pointer,uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1362,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1406,
                                        "name": "Identifier",
                                        "src": "4807:2:3"
                                      }
                                    ],
                                    "id": 1408,
                                    "name": "MemberAccess",
                                    "src": "4807:23:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sub",
                                          "referencedDeclaration": 16774,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1387,
                                              "type": "uint256",
                                              "value": "_seized"
                                            },
                                            "id": 1409,
                                            "name": "Identifier",
                                            "src": "4831:7:3"
                                          }
                                        ],
                                        "id": 1410,
                                        "name": "MemberAccess",
                                        "src": "4831:11:3"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "keepSetupFee",
                                          "referencedDeclaration": 3850,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1362,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 1411,
                                            "name": "Identifier",
                                            "src": "4843:2:3"
                                          }
                                        ],
                                        "id": 1412,
                                        "name": "MemberAccess",
                                        "src": "4843:15:3"
                                      }
                                    ],
                                    "id": 1413,
                                    "name": "FunctionCall",
                                    "src": "4831:28:3"
                                  }
                                ],
                                "id": 1414,
                                "name": "FunctionCall",
                                "src": "4807:53:3"
                              }
                            ],
                            "id": 1415,
                            "name": "ExpressionStatement",
                            "src": "4807:53:3"
                          }
                        ],
                        "id": 1416,
                        "name": "Block",
                        "src": "4664:207:3"
                      }
                    ],
                    "id": 1417,
                    "name": "IfStatement",
                    "src": "4632:239:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setFailedSetup",
                              "referencedDeclaration": 3657,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1362,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1418,
                                "name": "Identifier",
                                "src": "4881:2:3"
                              }
                            ],
                            "id": 1420,
                            "name": "MemberAccess",
                            "src": "4881:17:3"
                          }
                        ],
                        "id": 1421,
                        "name": "FunctionCall",
                        "src": "4881:19:3"
                      }
                    ],
                    "id": 1422,
                    "name": "ExpressionStatement",
                    "src": "4881:19:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logSetupFailed",
                              "referencedDeclaration": 5245,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1362,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1423,
                                "name": "Identifier",
                                "src": "4910:2:3"
                              }
                            ],
                            "id": 1425,
                            "name": "MemberAccess",
                            "src": "4910:17:3"
                          }
                        ],
                        "id": 1426,
                        "name": "FunctionCall",
                        "src": "4910:19:3"
                      }
                    ],
                    "id": 1427,
                    "name": "ExpressionStatement",
                    "src": "4910:19:3"
                  },
                  {
                    "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_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1198,
                              "type": "function (struct DepositUtils.Deposit storage pointer)",
                              "value": "fundingTeardown"
                            },
                            "id": 1428,
                            "name": "Identifier",
                            "src": "4940:15:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1362,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 1429,
                            "name": "Identifier",
                            "src": "4956:2:3"
                          }
                        ],
                        "id": 1430,
                        "name": "FunctionCall",
                        "src": "4940:19:3"
                      }
                    ],
                    "id": 1431,
                    "name": "ExpressionStatement",
                    "src": "4940:19:3"
                  }
                ],
                "id": 1432,
                "name": "Block",
                "src": "4144:822:3"
              }
            ],
            "id": 1433,
            "name": "FunctionDefinition",
            "src": "4069:897:3"
          },
          {
            "attributes": {
              "documentation": "@notice             we poll the Keep contract to retrieve our pubkey.\n @dev                We store the pubkey as 2 bytestrings, X and Y.\n @param  _d          Deposit storage pointer.\n @return             True if successful, otherwise revert.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "retrieveSignerPubkey",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1525,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1434,
                        "name": "UserDefinedTypeName",
                        "src": "5274:20:3"
                      }
                    ],
                    "id": 1435,
                    "name": "VariableDeclaration",
                    "src": "5274:31:3"
                  }
                ],
                "id": 1436,
                "name": "ParameterList",
                "src": "5273:33:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1437,
                "name": "ParameterList",
                "src": "5314:0:3"
              },
              {
                "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_ae26757200821b3ad77756c623b24fdd01adb505f01f8a6473e86b9cdf777c0b",
                                  "typeString": "literal_string \"Not currently awaiting signer setup\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1438,
                            "name": "Identifier",
                            "src": "5324:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inAwaitingSignerSetup",
                                  "referencedDeclaration": 3452,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1435,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1439,
                                    "name": "Identifier",
                                    "src": "5345:2:3"
                                  }
                                ],
                                "id": 1440,
                                "name": "MemberAccess",
                                "src": "5345:24:3"
                              }
                            ],
                            "id": 1441,
                            "name": "FunctionCall",
                            "src": "5345:26:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6f742063757272656e746c79206177616974696e67207369676e6572207365747570",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Not currently awaiting signer setup\"",
                              "value": "Not currently awaiting signer setup"
                            },
                            "id": 1442,
                            "name": "Literal",
                            "src": "5385:37:3"
                          }
                        ],
                        "id": 1443,
                        "name": "FunctionCall",
                        "src": "5324:108:3"
                      }
                    ],
                    "id": 1444,
                    "name": "ExpressionStatement",
                    "src": "5324:108:3"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1446
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_publicKey",
                          "scope": 1524,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 1445,
                            "name": "ElementaryTypeName",
                            "src": "5443:5:3"
                          }
                        ],
                        "id": 1446,
                        "name": "VariableDeclaration",
                        "src": "5443:23:3"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getPublicKey",
                              "referencedDeclaration": 11383,
                              "type": "function () view external returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract IBondedECDSAKeep",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11428,
                                      "type": "type(contract IBondedECDSAKeep)",
                                      "value": "IBondedECDSAKeep"
                                    },
                                    "id": 1447,
                                    "name": "Identifier",
                                    "src": "5481:16:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "keepAddress",
                                      "referencedDeclaration": 3858,
                                      "type": "address"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1435,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1448,
                                        "name": "Identifier",
                                        "src": "5498:2:3"
                                      }
                                    ],
                                    "id": 1449,
                                    "name": "MemberAccess",
                                    "src": "5498:14:3"
                                  }
                                ],
                                "id": 1450,
                                "name": "FunctionCall",
                                "src": "5481:32:3"
                              }
                            ],
                            "id": 1451,
                            "name": "MemberAccess",
                            "src": "5481:45:3"
                          }
                        ],
                        "id": 1452,
                        "name": "FunctionCall",
                        "src": "5481:47:3"
                      }
                    ],
                    "id": 1453,
                    "name": "VariableDeclarationStatement",
                    "src": "5443:85:3"
                  },
                  {
                    "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_5198bb2a1ff1ffe68f6d10097276526057736055996b19392ac1a70345d5195a",
                                  "typeString": "literal_string \"public key not set or not 64-bytes long\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1454,
                            "name": "Identifier",
                            "src": "5538:7:3"
                          },
                          {
                            "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": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1446,
                                      "type": "bytes memory",
                                      "value": "_publicKey"
                                    },
                                    "id": 1455,
                                    "name": "Identifier",
                                    "src": "5559:10:3"
                                  }
                                ],
                                "id": 1456,
                                "name": "MemberAccess",
                                "src": "5559:17:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3634",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 64",
                                  "value": "64"
                                },
                                "id": 1457,
                                "name": "Literal",
                                "src": "5580:2:3"
                              }
                            ],
                            "id": 1458,
                            "name": "BinaryOperation",
                            "src": "5559:23:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "7075626c6963206b6579206e6f7420736574206f72206e6f742036342d6279746573206c6f6e67",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"public key not set or not 64-bytes long\"",
                              "value": "public key not set or not 64-bytes long"
                            },
                            "id": 1459,
                            "name": "Literal",
                            "src": "5596:41:3"
                          }
                        ],
                        "id": 1460,
                        "name": "FunctionCall",
                        "src": "5538:109:3"
                      }
                    ],
                    "id": 1461,
                    "name": "ExpressionStatement",
                    "src": "5538:109:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupPubkeyX",
                              "referencedDeclaration": 3864,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1435,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1462,
                                "name": "Identifier",
                                "src": "5658:2:3"
                              }
                            ],
                            "id": 1464,
                            "name": "MemberAccess",
                            "src": "5658:22:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "toBytes32",
                                  "referencedDeclaration": 13400,
                                  "type": "function (bytes memory) pure returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "slice",
                                          "referencedDeclaration": 13281,
                                          "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1446,
                                              "type": "bytes memory",
                                              "value": "_publicKey"
                                            },
                                            "id": 1465,
                                            "name": "Identifier",
                                            "src": "5683:10:3"
                                          }
                                        ],
                                        "id": 1466,
                                        "name": "MemberAccess",
                                        "src": "5683:16:3"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 1467,
                                        "name": "Literal",
                                        "src": "5700:1:3"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3332",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 32",
                                          "value": "32"
                                        },
                                        "id": 1468,
                                        "name": "Literal",
                                        "src": "5703:2:3"
                                      }
                                    ],
                                    "id": 1469,
                                    "name": "FunctionCall",
                                    "src": "5683:23:3"
                                  }
                                ],
                                "id": 1470,
                                "name": "MemberAccess",
                                "src": "5683:33:3"
                              }
                            ],
                            "id": 1471,
                            "name": "FunctionCall",
                            "src": "5683:35:3"
                          }
                        ],
                        "id": 1472,
                        "name": "Assignment",
                        "src": "5658:60:3"
                      }
                    ],
                    "id": 1473,
                    "name": "ExpressionStatement",
                    "src": "5658:60:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "signingGroupPubkeyY",
                              "referencedDeclaration": 3866,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1435,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1474,
                                "name": "Identifier",
                                "src": "5728:2:3"
                              }
                            ],
                            "id": 1476,
                            "name": "MemberAccess",
                            "src": "5728:22:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "toBytes32",
                                  "referencedDeclaration": 13400,
                                  "type": "function (bytes memory) pure returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "slice",
                                          "referencedDeclaration": 13281,
                                          "type": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1446,
                                              "type": "bytes memory",
                                              "value": "_publicKey"
                                            },
                                            "id": 1477,
                                            "name": "Identifier",
                                            "src": "5753:10:3"
                                          }
                                        ],
                                        "id": 1478,
                                        "name": "MemberAccess",
                                        "src": "5753:16:3"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3332",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 32",
                                          "value": "32"
                                        },
                                        "id": 1479,
                                        "name": "Literal",
                                        "src": "5770:2:3"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "3332",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 32",
                                          "value": "32"
                                        },
                                        "id": 1480,
                                        "name": "Literal",
                                        "src": "5774:2:3"
                                      }
                                    ],
                                    "id": 1481,
                                    "name": "FunctionCall",
                                    "src": "5753:24:3"
                                  }
                                ],
                                "id": 1482,
                                "name": "MemberAccess",
                                "src": "5753:34:3"
                              }
                            ],
                            "id": 1483,
                            "name": "FunctionCall",
                            "src": "5753:36:3"
                          }
                        ],
                        "id": 1484,
                        "name": "Assignment",
                        "src": "5728:61:3"
                      }
                    ],
                    "id": 1485,
                    "name": "ExpressionStatement",
                    "src": "5728:61:3"
                  },
                  {
                    "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_ff90938c7094595e722035d933f1c2ab2af4ce3b705c9c3dd90aabd62e6083b5",
                                  "typeString": "literal_string \"Keep returned bad pubkey\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1486,
                            "name": "Identifier",
                            "src": "5799:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "signingGroupPubkeyY",
                                      "referencedDeclaration": 3866,
                                      "type": "bytes32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1435,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1487,
                                        "name": "Identifier",
                                        "src": "5820:2:3"
                                      }
                                    ],
                                    "id": 1488,
                                    "name": "MemberAccess",
                                    "src": "5820:22:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes32",
                                      "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(bytes32)",
                                          "value": "bytes32"
                                        },
                                        "id": 1489,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "5846:7:3"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 1490,
                                        "name": "Literal",
                                        "src": "5854:1:3"
                                      }
                                    ],
                                    "id": 1491,
                                    "name": "FunctionCall",
                                    "src": "5846:10:3"
                                  }
                                ],
                                "id": 1492,
                                "name": "BinaryOperation",
                                "src": "5820:36:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "signingGroupPubkeyX",
                                      "referencedDeclaration": 3864,
                                      "type": "bytes32"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1435,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 1493,
                                        "name": "Identifier",
                                        "src": "5876:2:3"
                                      }
                                    ],
                                    "id": 1494,
                                    "name": "MemberAccess",
                                    "src": "5876:22:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes32",
                                      "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(bytes32)",
                                          "value": "bytes32"
                                        },
                                        "id": 1495,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "5902:7:3"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 1496,
                                        "name": "Literal",
                                        "src": "5910:1:3"
                                      }
                                    ],
                                    "id": 1497,
                                    "name": "FunctionCall",
                                    "src": "5902:10:3"
                                  }
                                ],
                                "id": 1498,
                                "name": "BinaryOperation",
                                "src": "5876:36:3"
                              }
                            ],
                            "id": 1499,
                            "name": "BinaryOperation",
                            "src": "5820:92:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4b6565702072657475726e656420626164207075626b6579",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Keep returned bad pubkey\"",
                              "value": "Keep returned bad pubkey"
                            },
                            "id": 1500,
                            "name": "Literal",
                            "src": "5926:26:3"
                          }
                        ],
                        "id": 1501,
                        "name": "FunctionCall",
                        "src": "5799:163:3"
                      }
                    ],
                    "id": 1502,
                    "name": "ExpressionStatement",
                    "src": "5799:163:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "fundingProofTimerStart",
                              "referencedDeclaration": 3862,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1435,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1503,
                                "name": "Identifier",
                                "src": "5972:2:3"
                              }
                            ],
                            "id": 1505,
                            "name": "MemberAccess",
                            "src": "5972:25:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 1506,
                                "name": "Identifier",
                                "src": "6000:5:3"
                              }
                            ],
                            "id": 1507,
                            "name": "MemberAccess",
                            "src": "6000:15:3"
                          }
                        ],
                        "id": 1508,
                        "name": "Assignment",
                        "src": "5972:43:3"
                      }
                    ],
                    "id": 1509,
                    "name": "ExpressionStatement",
                    "src": "5972:43:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setAwaitingBTCFundingProof",
                              "referencedDeclaration": 3642,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1435,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1510,
                                "name": "Identifier",
                                "src": "6026:2:3"
                              }
                            ],
                            "id": 1512,
                            "name": "MemberAccess",
                            "src": "6026:29:3"
                          }
                        ],
                        "id": 1513,
                        "name": "FunctionCall",
                        "src": "6026:31:3"
                      }
                    ],
                    "id": 1514,
                    "name": "ExpressionStatement",
                    "src": "6026:31:3"
                  },
                  {
                    "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"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logRegisteredPubkey",
                              "referencedDeclaration": 5225,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes32,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1435,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1515,
                                "name": "Identifier",
                                "src": "6067:2:3"
                              }
                            ],
                            "id": 1517,
                            "name": "MemberAccess",
                            "src": "6067:22:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "signingGroupPubkeyX",
                              "referencedDeclaration": 3864,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1435,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1518,
                                "name": "Identifier",
                                "src": "6090:2:3"
                              }
                            ],
                            "id": 1519,
                            "name": "MemberAccess",
                            "src": "6090:22:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "signingGroupPubkeyY",
                              "referencedDeclaration": 3866,
                              "type": "bytes32"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1435,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1520,
                                "name": "Identifier",
                                "src": "6114:2:3"
                              }
                            ],
                            "id": 1521,
                            "name": "MemberAccess",
                            "src": "6114:22:3"
                          }
                        ],
                        "id": 1522,
                        "name": "FunctionCall",
                        "src": "6067:70:3"
                      }
                    ],
                    "id": 1523,
                    "name": "ExpressionStatement",
                    "src": "6067:70:3"
                  }
                ],
                "id": 1524,
                "name": "Block",
                "src": "5314:830:3"
              }
            ],
            "id": 1525,
            "name": "FunctionDefinition",
            "src": "5244:900:3"
          },
          {
            "attributes": {
              "documentation": "@notice Anyone may notify the contract that the funder has failed to\n         prove that they have sent BTC in time.\n @dev This is considered a funder fault, and the funder's payment for\n      opening the deposit is not refunded. Reverts if the funding timeout\n      has not yet elapsed, or if the deposit is not currently awaiting\n      funding proof.\n @param _d Deposit storage pointer.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "notifyFundingTimedOut",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1571,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1526,
                        "name": "UserDefinedTypeName",
                        "src": "6620:20:3"
                      }
                    ],
                    "id": 1527,
                    "name": "VariableDeclaration",
                    "src": "6620:31:3"
                  }
                ],
                "id": 1528,
                "name": "ParameterList",
                "src": "6619:33:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1529,
                "name": "ParameterList",
                "src": "6662:0:3"
              },
              {
                "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_711bda81c13cbfc66d7ae9e9086a745a6db419ab37c0875c5fbf970b950ccd9e",
                                  "typeString": "literal_string \"Funding timeout has not started\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1530,
                            "name": "Identifier",
                            "src": "6672:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inAwaitingBTCFundingProof",
                                  "referencedDeclaration": 3468,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1527,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1531,
                                    "name": "Identifier",
                                    "src": "6693:2:3"
                                  }
                                ],
                                "id": 1532,
                                "name": "MemberAccess",
                                "src": "6693:28:3"
                              }
                            ],
                            "id": 1533,
                            "name": "FunctionCall",
                            "src": "6693:30:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "46756e64696e672074696d656f757420686173206e6f742073746172746564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Funding timeout has not started\"",
                              "value": "Funding timeout has not started"
                            },
                            "id": 1534,
                            "name": "Literal",
                            "src": "6737:33:3"
                          }
                        ],
                        "id": 1535,
                        "name": "FunctionCall",
                        "src": "6672:108:3"
                      }
                    ],
                    "id": 1536,
                    "name": "ExpressionStatement",
                    "src": "6672:108:3"
                  },
                  {
                    "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_23dc769f64ec0bfcf4947d25cf0a7fe7f1a7e3ef54e5b7fc295c3abdc0c0f8f0",
                                  "typeString": "literal_string \"Funding timeout has not elapsed.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1537,
                            "name": "Identifier",
                            "src": "6790:7:3"
                          },
                          {
                            "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": "timestamp",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18350,
                                      "type": "block",
                                      "value": "block"
                                    },
                                    "id": 1538,
                                    "name": "Identifier",
                                    "src": "6811:5:3"
                                  }
                                ],
                                "id": 1539,
                                "name": "MemberAccess",
                                "src": "6811:15:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 16749,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "fundingProofTimerStart",
                                          "referencedDeclaration": 3862,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1527,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 1540,
                                            "name": "Identifier",
                                            "src": "6845:2:3"
                                          }
                                        ],
                                        "id": 1541,
                                        "name": "MemberAccess",
                                        "src": "6845:25:3"
                                      }
                                    ],
                                    "id": 1542,
                                    "name": "MemberAccess",
                                    "src": "6845:29:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "getFundingTimeout",
                                          "referencedDeclaration": 6732,
                                          "type": "function () pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6757,
                                              "type": "type(library TBTCConstants)",
                                              "value": "TBTCConstants"
                                            },
                                            "id": 1543,
                                            "name": "Identifier",
                                            "src": "6896:13:3"
                                          }
                                        ],
                                        "id": 1544,
                                        "name": "MemberAccess",
                                        "src": "6896:31:3"
                                      }
                                    ],
                                    "id": 1545,
                                    "name": "FunctionCall",
                                    "src": "6896:33:3"
                                  }
                                ],
                                "id": 1546,
                                "name": "FunctionCall",
                                "src": "6845:102:3"
                              }
                            ],
                            "id": 1547,
                            "name": "BinaryOperation",
                            "src": "6811:136:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "46756e64696e672074696d656f757420686173206e6f7420656c61707365642e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Funding timeout has not elapsed.\"",
                              "value": "Funding timeout has not elapsed."
                            },
                            "id": 1548,
                            "name": "Literal",
                            "src": "6961:34:3"
                          }
                        ],
                        "id": 1549,
                        "name": "FunctionCall",
                        "src": "6790:215:3"
                      }
                    ],
                    "id": 1550,
                    "name": "ExpressionStatement",
                    "src": "6790:215:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setFailedSetup",
                              "referencedDeclaration": 3657,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1527,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1551,
                                "name": "Identifier",
                                "src": "7015:2:3"
                              }
                            ],
                            "id": 1553,
                            "name": "MemberAccess",
                            "src": "7015:17:3"
                          }
                        ],
                        "id": 1554,
                        "name": "FunctionCall",
                        "src": "7015:19:3"
                      }
                    ],
                    "id": 1555,
                    "name": "ExpressionStatement",
                    "src": "7015:19:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logSetupFailed",
                              "referencedDeclaration": 5245,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1527,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1556,
                                "name": "Identifier",
                                "src": "7044:2:3"
                              }
                            ],
                            "id": 1558,
                            "name": "MemberAccess",
                            "src": "7044:17:3"
                          }
                        ],
                        "id": 1559,
                        "name": "FunctionCall",
                        "src": "7044:19:3"
                      }
                    ],
                    "id": 1560,
                    "name": "ExpressionStatement",
                    "src": "7044:19:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "closeKeep",
                              "referencedDeclaration": 3911,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1527,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1561,
                                "name": "Identifier",
                                "src": "7074:2:3"
                              }
                            ],
                            "id": 1563,
                            "name": "MemberAccess",
                            "src": "7074:12:3"
                          }
                        ],
                        "id": 1564,
                        "name": "FunctionCall",
                        "src": "7074:14:3"
                      }
                    ],
                    "id": 1565,
                    "name": "ExpressionStatement",
                    "src": "7074:14:3"
                  },
                  {
                    "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_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1198,
                              "type": "function (struct DepositUtils.Deposit storage pointer)",
                              "value": "fundingTeardown"
                            },
                            "id": 1566,
                            "name": "Identifier",
                            "src": "7098:15:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1527,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 1567,
                            "name": "Identifier",
                            "src": "7114:2:3"
                          }
                        ],
                        "id": 1568,
                        "name": "FunctionCall",
                        "src": "7098:19:3"
                      }
                    ],
                    "id": 1569,
                    "name": "ExpressionStatement",
                    "src": "7098:19:3"
                  }
                ],
                "id": 1570,
                "name": "Block",
                "src": "6662:462:3"
              }
            ],
            "id": 1571,
            "name": "FunctionDefinition",
            "src": "6589:535:3"
          },
          {
            "attributes": {
              "documentation": "@notice Requests a funder abort for a failed-funding deposit; that is,\n         requests return of a sent UTXO to `_abortOutputScript`. This can\n         be used for example when a UTXO is sent that is the wrong size\n         for the lot. Must be called after setup fails for any reason,\n         and imposes no requirement or incentive on the signing group to\n         return the UTXO.\n @dev This is a self-admitted funder fault, and should only be callable\n      by the TDT holder.\n @param _d Deposit storage pointer.\n @param _abortOutputScript The output script the funder wishes to request\n        a return of their UTXO to.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "requestFunderAbort",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1592,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1572,
                        "name": "UserDefinedTypeName",
                        "src": "7874:20:3"
                      }
                    ],
                    "id": 1573,
                    "name": "VariableDeclaration",
                    "src": "7874:31:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_abortOutputScript",
                      "scope": 1592,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1574,
                        "name": "ElementaryTypeName",
                        "src": "7915:5:3"
                      }
                    ],
                    "id": 1575,
                    "name": "VariableDeclaration",
                    "src": "7915:31:3"
                  }
                ],
                "id": 1576,
                "name": "ParameterList",
                "src": "7864:88:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1577,
                "name": "ParameterList",
                "src": "7960:0:3"
              },
              {
                "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_05a9ca867998b52d3e69846b7ea1fb6c1524be62e1713e23c9dd66499ceb29d4",
                                  "typeString": "literal_string \"The deposit has not failed funding\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1578,
                            "name": "Identifier",
                            "src": "8027:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inFailedSetup",
                                  "referencedDeclaration": 3484,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1573,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1579,
                                    "name": "Identifier",
                                    "src": "8035:2:3"
                                  }
                                ],
                                "id": 1580,
                                "name": "MemberAccess",
                                "src": "8035:16:3"
                              }
                            ],
                            "id": 1581,
                            "name": "FunctionCall",
                            "src": "8035:18:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "546865206465706f73697420686173206e6f74206661696c65642066756e64696e67",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"The deposit has not failed funding\"",
                              "value": "The deposit has not failed funding"
                            },
                            "id": 1582,
                            "name": "Literal",
                            "src": "8055:36:3"
                          }
                        ],
                        "id": 1583,
                        "name": "FunctionCall",
                        "src": "8027:65:3"
                      }
                    ],
                    "id": 1584,
                    "name": "ExpressionStatement",
                    "src": "8027:65:3"
                  },
                  {
                    "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_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logFunderRequestedAbort",
                              "referencedDeclaration": 5268,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1573,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1585,
                                "name": "Identifier",
                                "src": "8103:2:3"
                              }
                            ],
                            "id": 1587,
                            "name": "MemberAccess",
                            "src": "8103:26:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1575,
                              "type": "bytes memory",
                              "value": "_abortOutputScript"
                            },
                            "id": 1588,
                            "name": "Identifier",
                            "src": "8130:18:3"
                          }
                        ],
                        "id": 1589,
                        "name": "FunctionCall",
                        "src": "8103:46:3"
                      }
                    ],
                    "id": 1590,
                    "name": "ExpressionStatement",
                    "src": "8103:46:3"
                  }
                ],
                "id": 1591,
                "name": "Block",
                "src": "7960:196:3"
              }
            ],
            "id": 1592,
            "name": "FunctionDefinition",
            "src": "7837:319:3"
          },
          {
            "attributes": {
              "documentation": "@notice                 Anyone can provide a signature that was not requested to prove fraud during funding.\n @dev                    Calls out to the keep to verify if there was fraud.\n @param  _d              Deposit storage pointer.\n @param  _v              Signature recovery value.\n @param  _r              Signature R value.\n @param  _s              Signature S value.\n @param _signedDigest    The digest signed by the signature vrs tuple.\n @param _preimage        The sha256 preimage of the digest.\n @return                 True if successful, otherwise revert.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "provideFundingECDSAFraudProof",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1659,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1593,
                        "name": "UserDefinedTypeName",
                        "src": "8843:20:3"
                      }
                    ],
                    "id": 1594,
                    "name": "VariableDeclaration",
                    "src": "8843:31:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_v",
                      "scope": 1659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 1595,
                        "name": "ElementaryTypeName",
                        "src": "8884:5:3"
                      }
                    ],
                    "id": 1596,
                    "name": "VariableDeclaration",
                    "src": "8884:8:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_r",
                      "scope": 1659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1597,
                        "name": "ElementaryTypeName",
                        "src": "8902:7:3"
                      }
                    ],
                    "id": 1598,
                    "name": "VariableDeclaration",
                    "src": "8902:10:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_s",
                      "scope": 1659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1599,
                        "name": "ElementaryTypeName",
                        "src": "8922:7:3"
                      }
                    ],
                    "id": 1600,
                    "name": "VariableDeclaration",
                    "src": "8922:10:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signedDigest",
                      "scope": 1659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1601,
                        "name": "ElementaryTypeName",
                        "src": "8942:7:3"
                      }
                    ],
                    "id": 1602,
                    "name": "VariableDeclaration",
                    "src": "8942:21:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_preimage",
                      "scope": 1659,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1603,
                        "name": "ElementaryTypeName",
                        "src": "8973:5:3"
                      }
                    ],
                    "id": 1604,
                    "name": "VariableDeclaration",
                    "src": "8973:22:3"
                  }
                ],
                "id": 1605,
                "name": "ParameterList",
                "src": "8833:168:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1606,
                "name": "ParameterList",
                "src": "9009:0:3"
              },
              {
                "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_84693089109c726236c65bf5003f2f123b9d7da88bc826a149f83da88446a404",
                                  "typeString": "literal_string \"Signer fraud during funding flow only available while awaiting funding\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1607,
                            "name": "Identifier",
                            "src": "9076:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inAwaitingBTCFundingProof",
                                  "referencedDeclaration": 3468,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1594,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1608,
                                    "name": "Identifier",
                                    "src": "9097:2:3"
                                  }
                                ],
                                "id": 1609,
                                "name": "MemberAccess",
                                "src": "9097:28:3"
                              }
                            ],
                            "id": 1610,
                            "name": "FunctionCall",
                            "src": "9097:30:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "5369676e657220667261756420647572696e672066756e64696e6720666c6f77206f6e6c7920617661696c61626c65207768696c65206177616974696e672066756e64696e67",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Signer fraud during funding flow only available while awaiting funding\"",
                              "value": "Signer fraud during funding flow only available while awaiting funding"
                            },
                            "id": 1611,
                            "name": "Literal",
                            "src": "9141:72:3"
                          }
                        ],
                        "id": 1612,
                        "name": "FunctionCall",
                        "src": "9076:147:3"
                      }
                    ],
                    "id": 1613,
                    "name": "ExpressionStatement",
                    "src": "9076:147:3"
                  },
                  {
                    "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_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "submitSignatureFraud",
                              "referencedDeclaration": 1833,
                              "type": "function (struct DepositUtils.Deposit storage pointer,uint8,bytes32,bytes32,bytes32,bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1594,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1614,
                                "name": "Identifier",
                                "src": "9234:2:3"
                              }
                            ],
                            "id": 1616,
                            "name": "MemberAccess",
                            "src": "9234:23:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1596,
                              "type": "uint8",
                              "value": "_v"
                            },
                            "id": 1617,
                            "name": "Identifier",
                            "src": "9258:2:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1598,
                              "type": "bytes32",
                              "value": "_r"
                            },
                            "id": 1618,
                            "name": "Identifier",
                            "src": "9262:2:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1600,
                              "type": "bytes32",
                              "value": "_s"
                            },
                            "id": 1619,
                            "name": "Identifier",
                            "src": "9266:2:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1602,
                              "type": "bytes32",
                              "value": "_signedDigest"
                            },
                            "id": 1620,
                            "name": "Identifier",
                            "src": "9270:13:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1604,
                              "type": "bytes memory",
                              "value": "_preimage"
                            },
                            "id": 1621,
                            "name": "Identifier",
                            "src": "9285:9:3"
                          }
                        ],
                        "id": 1622,
                        "name": "FunctionCall",
                        "src": "9234:61:3"
                      }
                    ],
                    "id": 1623,
                    "name": "ExpressionStatement",
                    "src": "9234:61:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logFraudDuringSetup",
                              "referencedDeclaration": 5288,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1594,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1624,
                                "name": "Identifier",
                                "src": "9305:2:3"
                              }
                            ],
                            "id": 1626,
                            "name": "MemberAccess",
                            "src": "9305:22:3"
                          }
                        ],
                        "id": 1627,
                        "name": "FunctionCall",
                        "src": "9305:24:3"
                      }
                    ],
                    "id": 1628,
                    "name": "ExpressionStatement",
                    "src": "9305:24:3"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1630
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_seized",
                          "scope": 1658,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1629,
                            "name": "ElementaryTypeName",
                            "src": "9424:7:3"
                          }
                        ],
                        "id": 1630,
                        "name": "VariableDeclaration",
                        "src": "9424:15:3"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "seizeSignerBonds",
                              "referencedDeclaration": 4698,
                              "type": "function (struct DepositUtils.Deposit storage pointer) returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1594,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1631,
                                "name": "Identifier",
                                "src": "9442:2:3"
                              }
                            ],
                            "id": 1632,
                            "name": "MemberAccess",
                            "src": "9442:19:3"
                          }
                        ],
                        "id": 1633,
                        "name": "FunctionCall",
                        "src": "9442:21:3"
                      }
                    ],
                    "id": 1634,
                    "name": "VariableDeclarationStatement",
                    "src": "9424:39:3"
                  },
                  {
                    "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_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "enableWithdrawal",
                              "referencedDeclaration": 4722,
                              "type": "function (struct DepositUtils.Deposit storage pointer,address,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1594,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1635,
                                "name": "Identifier",
                                "src": "9473:2:3"
                              }
                            ],
                            "id": 1637,
                            "name": "MemberAccess",
                            "src": "9473:19:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address payable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "depositOwner",
                                  "referencedDeclaration": 4604,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (address payable)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1594,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1638,
                                    "name": "Identifier",
                                    "src": "9493:2:3"
                                  }
                                ],
                                "id": 1639,
                                "name": "MemberAccess",
                                "src": "9493:15:3"
                              }
                            ],
                            "id": 1640,
                            "name": "FunctionCall",
                            "src": "9493:17:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1630,
                              "type": "uint256",
                              "value": "_seized"
                            },
                            "id": 1641,
                            "name": "Identifier",
                            "src": "9512:7:3"
                          }
                        ],
                        "id": 1642,
                        "name": "FunctionCall",
                        "src": "9473:47:3"
                      }
                    ],
                    "id": 1643,
                    "name": "ExpressionStatement",
                    "src": "9473:47:3"
                  },
                  {
                    "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_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1240,
                              "type": "function (struct DepositUtils.Deposit storage pointer)",
                              "value": "fundingFraudTeardown"
                            },
                            "id": 1644,
                            "name": "Identifier",
                            "src": "9531:20:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1594,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 1645,
                            "name": "Identifier",
                            "src": "9552:2:3"
                          }
                        ],
                        "id": 1646,
                        "name": "FunctionCall",
                        "src": "9531:24:3"
                      }
                    ],
                    "id": 1647,
                    "name": "ExpressionStatement",
                    "src": "9531:24:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setFailedSetup",
                              "referencedDeclaration": 3657,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1594,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1648,
                                "name": "Identifier",
                                "src": "9565:2:3"
                              }
                            ],
                            "id": 1650,
                            "name": "MemberAccess",
                            "src": "9565:17:3"
                          }
                        ],
                        "id": 1651,
                        "name": "FunctionCall",
                        "src": "9565:19:3"
                      }
                    ],
                    "id": 1652,
                    "name": "ExpressionStatement",
                    "src": "9565:19:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logSetupFailed",
                              "referencedDeclaration": 5245,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1594,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1653,
                                "name": "Identifier",
                                "src": "9594:2:3"
                              }
                            ],
                            "id": 1655,
                            "name": "MemberAccess",
                            "src": "9594:17:3"
                          }
                        ],
                        "id": 1656,
                        "name": "FunctionCall",
                        "src": "9594:19:3"
                      }
                    ],
                    "id": 1657,
                    "name": "ExpressionStatement",
                    "src": "9594:19:3"
                  }
                ],
                "id": 1658,
                "name": "Block",
                "src": "9009:611:3"
              }
            ],
            "id": 1659,
            "name": "FunctionDefinition",
            "src": "8795:825:3"
          },
          {
            "attributes": {
              "documentation": "@notice                     Anyone may notify the deposit of a funding proof to activate the deposit.\n                             This is the happy-path of the funding flow. It means that we have succeeded.\n @dev                        Takes a pre-parsed transaction and calculates values needed to verify funding.\n @param  _d                  Deposit storage pointer.\n @param _txVersion           Transaction version number (4-byte LE).\n @param _txInputVector       All transaction inputs prepended by the number of inputs encoded as a VarInt, max 0xFC(252) inputs.\n @param _txOutputVector      All transaction outputs prepended by the number of outputs encoded as a VarInt, max 0xFC(252) outputs.\n @param _txLocktime          Final 4 bytes of the transaction.\n @param _fundingOutputIndex  Index of funding output in _txOutputVector (0-indexed).\n @param _merkleProof         The merkle proof of transaction inclusion in a block.\n @param _txIndexInBlock      Transaction index in the block (0-indexed).\n @param _bitcoinHeaders      Single bytestring of 80-byte bitcoin headers, lowest height first.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "provideBTCFundingProof",
              "scope": 1757,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 1660,
                        "name": "UserDefinedTypeName",
                        "src": "10852:20:3"
                      }
                    ],
                    "id": 1661,
                    "name": "VariableDeclaration",
                    "src": "10852:31:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txVersion",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 1662,
                        "name": "ElementaryTypeName",
                        "src": "10893:6:3"
                      }
                    ],
                    "id": 1663,
                    "name": "VariableDeclaration",
                    "src": "10893:17:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txInputVector",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1664,
                        "name": "ElementaryTypeName",
                        "src": "10920:5:3"
                      }
                    ],
                    "id": 1665,
                    "name": "VariableDeclaration",
                    "src": "10920:27:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txOutputVector",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1666,
                        "name": "ElementaryTypeName",
                        "src": "10957:5:3"
                      }
                    ],
                    "id": 1667,
                    "name": "VariableDeclaration",
                    "src": "10957:28:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txLocktime",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 1668,
                        "name": "ElementaryTypeName",
                        "src": "10995:6:3"
                      }
                    ],
                    "id": 1669,
                    "name": "VariableDeclaration",
                    "src": "10995:18:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_fundingOutputIndex",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 1670,
                        "name": "ElementaryTypeName",
                        "src": "11023:5:3"
                      }
                    ],
                    "id": 1671,
                    "name": "VariableDeclaration",
                    "src": "11023:25:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_merkleProof",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1672,
                        "name": "ElementaryTypeName",
                        "src": "11058:5:3"
                      }
                    ],
                    "id": 1673,
                    "name": "VariableDeclaration",
                    "src": "11058:25:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txIndexInBlock",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1674,
                        "name": "ElementaryTypeName",
                        "src": "11093:7:3"
                      }
                    ],
                    "id": 1675,
                    "name": "VariableDeclaration",
                    "src": "11093:23:3"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_bitcoinHeaders",
                      "scope": 1756,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1676,
                        "name": "ElementaryTypeName",
                        "src": "11126:5:3"
                      }
                    ],
                    "id": 1677,
                    "name": "VariableDeclaration",
                    "src": "11126:28:3"
                  }
                ],
                "id": 1678,
                "name": "ParameterList",
                "src": "10842:318:3"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1679,
                "name": "ParameterList",
                "src": "11168:0:3"
              },
              {
                "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_a4bc860fa5eaf93320e081bf13ff5eaf94c51aa2ec29146b59ffe42e0ed01a43",
                                  "typeString": "literal_string \"Not awaiting funding\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1680,
                            "name": "Identifier",
                            "src": "11236:7:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "inAwaitingBTCFundingProof",
                                  "referencedDeclaration": 3468,
                                  "type": "function (struct DepositUtils.Deposit storage pointer) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1661,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1681,
                                    "name": "Identifier",
                                    "src": "11244:2:3"
                                  }
                                ],
                                "id": 1682,
                                "name": "MemberAccess",
                                "src": "11244:28:3"
                              }
                            ],
                            "id": 1683,
                            "name": "FunctionCall",
                            "src": "11244:30:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4e6f74206177616974696e672066756e64696e67",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Not awaiting funding\"",
                              "value": "Not awaiting funding"
                            },
                            "id": 1684,
                            "name": "Literal",
                            "src": "11276:22:3"
                          }
                        ],
                        "id": 1685,
                        "name": "FunctionCall",
                        "src": "11236:63:3"
                      }
                    ],
                    "id": 1686,
                    "name": "ExpressionStatement",
                    "src": "11236:63:3"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1688
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_valueBytes",
                          "scope": 1755,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes8",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes8",
                              "type": "bytes8"
                            },
                            "id": 1687,
                            "name": "ElementaryTypeName",
                            "src": "11310:6:3"
                          }
                        ],
                        "id": 1688,
                        "name": "VariableDeclaration",
                        "src": "11310:18:3"
                      }
                    ],
                    "id": 1689,
                    "name": "VariableDeclarationStatement",
                    "src": "11310:18:3"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1691
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_utxoOutpoint",
                          "scope": 1755,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 1690,
                            "name": "ElementaryTypeName",
                            "src": "11338:5:3"
                          }
                        ],
                        "id": 1691,
                        "name": "VariableDeclaration",
                        "src": "11338:26:3"
                      }
                    ],
                    "id": 1692,
                    "name": "VariableDeclarationStatement",
                    "src": "11338:26:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "tuple(bytes8,bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1688,
                                  "type": "bytes8",
                                  "value": "_valueBytes"
                                },
                                "id": 1693,
                                "name": "Identifier",
                                "src": "11376:11:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1691,
                                  "type": "bytes memory",
                                  "value": "_utxoOutpoint"
                                },
                                "id": 1694,
                                "name": "Identifier",
                                "src": "11389:13:3"
                              }
                            ],
                            "id": 1695,
                            "name": "TupleExpression",
                            "src": "11375:28:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple(bytes8,bytes memory)",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "validateAndParseFundingSPVProof",
                                  "referencedDeclaration": 4237,
                                  "type": "function (struct DepositUtils.Deposit storage pointer,bytes4,bytes memory,bytes memory,bytes4,uint8,bytes memory,uint256,bytes memory) view returns (bytes8,bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1661,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 1696,
                                    "name": "Identifier",
                                    "src": "11406:2:3"
                                  }
                                ],
                                "id": 1697,
                                "name": "MemberAccess",
                                "src": "11406:34:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1663,
                                  "type": "bytes4",
                                  "value": "_txVersion"
                                },
                                "id": 1698,
                                "name": "Identifier",
                                "src": "11454:10:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1665,
                                  "type": "bytes memory",
                                  "value": "_txInputVector"
                                },
                                "id": 1699,
                                "name": "Identifier",
                                "src": "11478:14:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1667,
                                  "type": "bytes memory",
                                  "value": "_txOutputVector"
                                },
                                "id": 1700,
                                "name": "Identifier",
                                "src": "11506:15:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1669,
                                  "type": "bytes4",
                                  "value": "_txLocktime"
                                },
                                "id": 1701,
                                "name": "Identifier",
                                "src": "11535:11:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1671,
                                  "type": "uint8",
                                  "value": "_fundingOutputIndex"
                                },
                                "id": 1702,
                                "name": "Identifier",
                                "src": "11560:19:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1673,
                                  "type": "bytes memory",
                                  "value": "_merkleProof"
                                },
                                "id": 1703,
                                "name": "Identifier",
                                "src": "11593:12:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1675,
                                  "type": "uint256",
                                  "value": "_txIndexInBlock"
                                },
                                "id": 1704,
                                "name": "Identifier",
                                "src": "11619:15:3"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1677,
                                  "type": "bytes memory",
                                  "value": "_bitcoinHeaders"
                                },
                                "id": 1705,
                                "name": "Identifier",
                                "src": "11648:15:3"
                              }
                            ],
                            "id": 1706,
                            "name": "FunctionCall",
                            "src": "11406:267:3"
                          }
                        ],
                        "id": 1707,
                        "name": "Assignment",
                        "src": "11375:298:3"
                      }
                    ],
                    "id": 1708,
                    "name": "ExpressionStatement",
                    "src": "11375:298:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "utxoValueBytes",
                              "referencedDeclaration": 3880,
                              "type": "bytes8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1661,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1709,
                                "name": "Identifier",
                                "src": "11758:2:3"
                              }
                            ],
                            "id": 1711,
                            "name": "MemberAccess",
                            "src": "11758:17:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1688,
                              "type": "bytes8",
                              "value": "_valueBytes"
                            },
                            "id": 1712,
                            "name": "Identifier",
                            "src": "11778:11:3"
                          }
                        ],
                        "id": 1713,
                        "name": "Assignment",
                        "src": "11758:31:3"
                      }
                    ],
                    "id": 1714,
                    "name": "ExpressionStatement",
                    "src": "11758:31:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "utxoOutpoint",
                              "referencedDeclaration": 3884,
                              "type": "bytes storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1661,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1715,
                                "name": "Identifier",
                                "src": "11799:2:3"
                              }
                            ],
                            "id": 1717,
                            "name": "MemberAccess",
                            "src": "11799:15:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1691,
                              "type": "bytes memory",
                              "value": "_utxoOutpoint"
                            },
                            "id": 1718,
                            "name": "Identifier",
                            "src": "11817:13:3"
                          }
                        ],
                        "id": 1719,
                        "name": "Assignment",
                        "src": "11799:31:3"
                      }
                    ],
                    "id": 1720,
                    "name": "ExpressionStatement",
                    "src": "11799:31:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "fundedAt",
                              "referencedDeclaration": 3882,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1661,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1721,
                                "name": "Identifier",
                                "src": "11840:2:3"
                              }
                            ],
                            "id": 1723,
                            "name": "MemberAccess",
                            "src": "11840:11:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 1724,
                                "name": "Identifier",
                                "src": "11854:5:3"
                              }
                            ],
                            "id": 1725,
                            "name": "MemberAccess",
                            "src": "11854:15:3"
                          }
                        ],
                        "id": 1726,
                        "name": "Assignment",
                        "src": "11840:29:3"
                      }
                    ],
                    "id": 1727,
                    "name": "ExpressionStatement",
                    "src": "11840:29:3"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1729
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_txid",
                          "scope": 1755,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 1728,
                            "name": "ElementaryTypeName",
                            "src": "11880:7:3"
                          }
                        ],
                        "id": 1729,
                        "name": "VariableDeclaration",
                        "src": "11880:13:3"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "hash256",
                              "referencedDeclaration": 11851,
                              "type": "function (bytes memory) pure returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "encodePacked",
                                      "referencedDeclaration": null,
                                      "type": "function () pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 18347,
                                          "type": "abi",
                                          "value": "abi"
                                        },
                                        "id": 1730,
                                        "name": "Identifier",
                                        "src": "11908:3:3"
                                      }
                                    ],
                                    "id": 1731,
                                    "name": "MemberAccess",
                                    "src": "11908:33:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1663,
                                      "type": "bytes4",
                                      "value": "_txVersion"
                                    },
                                    "id": 1732,
                                    "name": "Identifier",
                                    "src": "11959:10:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1665,
                                      "type": "bytes memory",
                                      "value": "_txInputVector"
                                    },
                                    "id": 1733,
                                    "name": "Identifier",
                                    "src": "11987:14:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1667,
                                      "type": "bytes memory",
                                      "value": "_txOutputVector"
                                    },
                                    "id": 1734,
                                    "name": "Identifier",
                                    "src": "12019:15:3"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1669,
                                      "type": "bytes4",
                                      "value": "_txLocktime"
                                    },
                                    "id": 1735,
                                    "name": "Identifier",
                                    "src": "12052:11:3"
                                  }
                                ],
                                "id": 1736,
                                "name": "FunctionCall",
                                "src": "11908:169:3"
                              }
                            ],
                            "id": 1737,
                            "name": "MemberAccess",
                            "src": "11908:194:3"
                          }
                        ],
                        "id": 1738,
                        "name": "FunctionCall",
                        "src": "11908:196:3"
                      }
                    ],
                    "id": 1739,
                    "name": "VariableDeclarationStatement",
                    "src": "11880:224:3"
                  },
                  {
                    "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_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1198,
                              "type": "function (struct DepositUtils.Deposit storage pointer)",
                              "value": "fundingTeardown"
                            },
                            "id": 1740,
                            "name": "Identifier",
                            "src": "12115:15:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1661,
                              "type": "struct DepositUtils.Deposit storage pointer",
                              "value": "_d"
                            },
                            "id": 1741,
                            "name": "Identifier",
                            "src": "12131:2:3"
                          }
                        ],
                        "id": 1742,
                        "name": "FunctionCall",
                        "src": "12115:19:3"
                      }
                    ],
                    "id": 1743,
                    "name": "ExpressionStatement",
                    "src": "12115:19:3"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setActive",
                              "referencedDeclaration": 3672,
                              "type": "function (struct DepositUtils.Deposit storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1661,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1744,
                                "name": "Identifier",
                                "src": "12144:2:3"
                              }
                            ],
                            "id": 1746,
                            "name": "MemberAccess",
                            "src": "12144:12:3"
                          }
                        ],
                        "id": 1747,
                        "name": "FunctionCall",
                        "src": "12144:14:3"
                      }
                    ],
                    "id": 1748,
                    "name": "ExpressionStatement",
                    "src": "12144:14:3"
                  },
                  {
                    "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"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logFunded",
                              "referencedDeclaration": 5311,
                              "type": "function (struct DepositUtils.Deposit storage pointer,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1661,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 1749,
                                "name": "Identifier",
                                "src": "12168:2:3"
                              }
                            ],
                            "id": 1751,
                            "name": "MemberAccess",
                            "src": "12168:12:3"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1729,
                              "type": "bytes32",
                              "value": "_txid"
                            },
                            "id": 1752,
                            "name": "Identifier",
                            "src": "12181:5:3"
                          }
                        ],
                        "id": 1753,
                        "name": "FunctionCall",
                        "src": "12168:19:3"
                      }
                    ],
                    "id": 1754,
                    "name": "ExpressionStatement",
                    "src": "12168:19:3"
                  }
                ],
                "id": 1755,
                "name": "Block",
                "src": "11168:1026:3"
              }
            ],
            "id": 1756,
            "name": "FunctionDefinition",
            "src": "10811:1383:3"
          }
        ],
        "id": 1757,
        "name": "ContractDefinition",
        "src": "694:11502:3"
      }
    ],
    "id": 1758,
    "name": "SourceUnit",
    "src": "0:12197:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {
        "TBTCConstants": "0xb1cd05843856750cA058965511edfAA9E55cDF02",
        "OutsourceDepositLogging": "0xb131FcDE5910d616C6f36421153f4608b6175Bcb",
        "DepositStates": "0xe79c67D88274e07F0cecB2455DCabe23B304b525",
        "DepositUtils": "0xc9077A33E13422358af7C873188a3E4A3D731A86",
        "DepositLiquidation": "0x3473DaEDf59f4785E9902218E3D40CB1a6343c3A"
      },
      "address": "0xd7839409b6b48568ef063041D0C8849abfC71CFe",
      "transactionHash": "0x6bd58006eb24aa13429a81895d85fb6cbcb7016fe6610360c1410dd77985d574"
    }
  },
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T12:01:17.190Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {
      "initialize(DepositUtils.Deposit storage,uint64)": {
        "details": "If called directly, the transaction will revert since the call will      be executed on an already set-up instance.",
        "params": {
          "_d": "Deposit storage pointer.",
          "_lotSizeSatoshis": "Lot size in satoshis."
        }
      },
      "notifyFundingTimedOut(DepositUtils.Deposit storage)": {
        "details": "This is considered a funder fault, and the funder's payment for      opening the deposit is not refunded. Reverts if the funding timeout      has not yet elapsed, or if the deposit is not currently awaiting      funding proof.",
        "params": {
          "_d": "Deposit storage pointer."
        }
      },
      "notifySignerSetupFailed(DepositUtils.Deposit storage)": {
        "params": {
          "_d": "Deposit storage pointer."
        }
      },
      "provideBTCFundingProof(DepositUtils.Deposit storage,bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)": {
        "details": "Takes a pre-parsed transaction and calculates values needed to verify funding.",
        "params": {
          "_bitcoinHeaders": "Single bytestring of 80-byte bitcoin headers, lowest height first.",
          "_d": "Deposit storage pointer.",
          "_fundingOutputIndex": "Index of funding output in _txOutputVector (0-indexed).",
          "_merkleProof": "The merkle proof of transaction inclusion in a block.",
          "_txIndexInBlock": "Transaction index in the block (0-indexed).",
          "_txInputVector": "All transaction inputs prepended by the number of inputs encoded as a VarInt, max 0xFC(252) inputs.",
          "_txLocktime": "Final 4 bytes of the transaction.",
          "_txOutputVector": "All transaction outputs prepended by the number of outputs encoded as a VarInt, max 0xFC(252) outputs.",
          "_txVersion": "Transaction version number (4-byte LE)."
        }
      },
      "provideFundingECDSAFraudProof(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)": {
        "details": "Calls out to the keep to verify if there was fraud.",
        "params": {
          "_d": "Deposit storage pointer.",
          "_preimage": "The sha256 preimage of the digest.",
          "_r": "Signature R value.",
          "_s": "Signature S value.",
          "_signedDigest": "The digest signed by the signature vrs tuple.",
          "_v": "Signature recovery value."
        },
        "return": "True if successful, otherwise revert."
      },
      "requestFunderAbort(DepositUtils.Deposit storage,bytes)": {
        "details": "This is a self-admitted funder fault, and should only be callable      by the TDT holder.",
        "params": {
          "_abortOutputScript": "The output script the funder wishes to request        a return of their UTXO to.",
          "_d": "Deposit storage pointer."
        }
      },
      "retrieveSignerPubkey(DepositUtils.Deposit storage)": {
        "details": "We store the pubkey as 2 bytestrings, X and Y.",
        "params": {
          "_d": "Deposit storage pointer."
        },
        "return": "True if successful, otherwise revert."
      }
    }
  },
  "userdoc": {
    "methods": {
      "initialize(DepositUtils.Deposit storage,uint64)": {
        "notice": "Internally called function to set up a newly created Deposit         instance. This should not be called by developers, use         `DepositFactory.createDeposit` to create a new deposit."
      },
      "notifyFundingTimedOut(DepositUtils.Deposit storage)": {
        "notice": "Anyone may notify the contract that the funder has failed to         prove that they have sent BTC in time."
      },
      "notifySignerSetupFailed(DepositUtils.Deposit storage)": {
        "notice": "Anyone may notify the contract that signing group setup has timed out."
      },
      "provideBTCFundingProof(DepositUtils.Deposit storage,bytes4,bytes,bytes,bytes4,uint8,bytes,uint256,bytes)": {
        "notice": "Anyone may notify the deposit of a funding proof to activate the deposit.                             This is the happy-path of the funding flow. It means that we have succeeded."
      },
      "provideFundingECDSAFraudProof(DepositUtils.Deposit storage,uint8,bytes32,bytes32,bytes32,bytes)": {
        "notice": "Anyone can provide a signature that was not requested to prove fraud during funding."
      },
      "requestFunderAbort(DepositUtils.Deposit storage,bytes)": {
        "notice": "Requests a funder abort for a failed-funding deposit; that is,         requests return of a sent UTXO to `_abortOutputScript`. This can         be used for example when a UTXO is sent that is the wrong size         for the lot. Must be called after setup fails for any reason,         and imposes no requirement or incentive on the signing group to         return the UTXO."
      },
      "retrieveSignerPubkey(DepositUtils.Deposit storage)": {
        "notice": "we poll the Keep contract to retrieve our pubkey."
      }
    }
  }
}