{
    "contractName": "Penalizer",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_penalizeBlockDelay",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_penalizeBlockExpiration",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "commitHash",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "readyBlockNumber",
                    "type": "uint256"
                }
            ],
            "name": "CommitAdded",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "name": "commits",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "versionPenalizer",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getPenalizeBlockDelay",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getPenalizeBlockExpiration",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "rawTransaction",
                    "type": "bytes"
                }
            ],
            "name": "isTransactionTypeValid",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "rawTransaction",
                    "type": "bytes"
                }
            ],
            "name": "decodeTransaction",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "nonce",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "gasLimit",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "to",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bytes",
                            "name": "data",
                            "type": "bytes"
                        }
                    ],
                    "internalType": "struct IPenalizer.Transaction",
                    "name": "transaction",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "commitHash",
                    "type": "bytes32"
                }
            ],
            "name": "commit",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "unsignedTx1",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "signature1",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "unsignedTx2",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "signature2",
                    "type": "bytes"
                },
                {
                    "internalType": "contract IRelayHub",
                    "name": "hub",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "randomValue",
                    "type": "uint256"
                }
            ],
            "name": "penalizeRepeatedNonce",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "unsignedTx",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "signature",
                    "type": "bytes"
                },
                {
                    "internalType": "contract IRelayHub",
                    "name": "hub",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "randomValue",
                    "type": "uint256"
                }
            ],
            "name": "penalizeIllegalTransaction",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_penalizeBlockDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_penalizeBlockExpiration\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"readyBlockNumber\",\"type\":\"uint256\"}],\"name\":\"CommitAdded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitHash\",\"type\":\"bytes32\"}],\"name\":\"commit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"rawTransaction\",\"type\":\"bytes\"}],\"name\":\"decodeTransaction\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct IPenalizer.Transaction\",\"name\":\"transaction\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPenalizeBlockDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPenalizeBlockExpiration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"rawTransaction\",\"type\":\"bytes\"}],\"name\":\"isTransactionTypeValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"unsignedTx\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"contract IRelayHub\",\"name\":\"hub\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"randomValue\",\"type\":\"uint256\"}],\"name\":\"penalizeIllegalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"unsignedTx1\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature1\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"unsignedTx2\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature2\",\"type\":\"bytes\"},{\"internalType\":\"contract IRelayHub\",\"name\":\"hub\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"randomValue\",\"type\":\"uint256\"}],\"name\":\"penalizeRepeatedNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionPenalizer\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"commit(bytes32)\":{\"params\":{\"commitHash\":\"The hash of the report of a penalizable behaviour the reporter wants to reveal. Calculated as `commit(keccak(encodedPenalizeFunction))`.\"}},\"decodeTransaction(bytes)\":{\"returns\":{\"transaction\":\"The details that the `Penalizer` needs to decide if the transaction is penalizable.\"}},\"getPenalizeBlockDelay()\":{\"returns\":{\"_0\":\"The minimum delay between commit and reveal steps.\"}},\"getPenalizeBlockExpiration()\":{\"returns\":{\"_0\":\"The maximum delay between commit and reveal steps.\"}},\"isTransactionTypeValid(bytes)\":{\"returns\":{\"_0\":\"`true` if raw transaction is of types Legacy, 1 or 2. `false` otherwise.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"stateVariables\":{\"versionPenalizer\":{\"return\":\"a SemVer-compliant version of the `Penalizer` contract.\",\"returns\":{\"_0\":\"a SemVer-compliant version of the `Penalizer` contract.\"}}},\"title\":\"The Penalizer Implementation\",\"version\":1},\"userdoc\":{\"events\":{\"CommitAdded(address,bytes32,uint256)\":{\"notice\":\"Emitted once the reporter submits the first step in the commit-reveal process.\"}},\"kind\":\"user\",\"methods\":{\"commit(bytes32)\":{\"notice\":\"Called by the reporter as the first step in the commit-reveal process. Any sender can call it to make sure no-one can front-run it to claim this penalization.\"},\"penalizeIllegalTransaction(bytes,bytes,address,uint256)\":{\"notice\":\"Called by the reporter as the second step in the commit-reveal process. The Relay Workers are not allowed to make calls other than to the `relayCall` method.\"},\"penalizeRepeatedNonce(bytes,bytes,bytes,bytes,address,uint256)\":{\"notice\":\"Called by the reporter as the second step in the commit-reveal process. If a Relay Worker attacked the system by signing multiple transactions with same nonce so only one is accepted, anyone can grab both transactions from the blockchain and submit them here. Check whether `unsignedTx1` != `unsignedTx2`, that both are signed by the same address, and that `unsignedTx1.nonce` == `unsignedTx2.nonce`. If all conditions are met, relay is considered an \\\"offending relay\\\". The offending relay will be unregistered immediately, its stake will be forfeited and given to the address who reported it (the `msg.sender`), thus incentivizing anyone to report offending relays.\"}},\"notice\":\"This Penalizer supports parsing Legacy, Type 1 and Type 2 raw RLP Encoded transactions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/alexf/gsn2/packages/contracts/solpp/Penalizer.sol\":\"Penalizer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/alexf/gsn2/packages/contracts/solpp/Penalizer.sol\":{\"keccak256\":\"0x085accfafe03164014c4b78972379fc0afb25b4141ba0f5dd0479d6e9b959e9b\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://98bad91c040c8ef891ba95d25971d8689a5d196b2e540d44c33f1c4e9f02f66b\",\"dweb:/ipfs/QmV9dBCYdnCXj555XzA3UpZZLYu4U7UnVshdcQvTpcW4Ux\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/forwarder/IForwarder.sol\":{\"keccak256\":\"0xef3d770001c3245db4408cdd0afdfc622695ccfe31f28b74571d05158bbf83f8\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://08949174ed05b596d89c8f1eeedfeb254993b84054bbc1ff6081ad926f5db406\",\"dweb:/ipfs/QmNQtKzHpie4Esocxuc9YrPtGQyA928a1a5TWbVc7cPoqk\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IPenalizer.sol\":{\"keccak256\":\"0x634bbc00ef00d1bcf9e1b6ebc2874fa45ae5742a6b3b01cb5b938d4bd3108cd7\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://9eb06e03f84ef895944bdeb5f8b133ac8adf66167cd6d6b392eefde3210cbf20\",\"dweb:/ipfs/QmaZL9ngF4jz8PSzPyXmBvZJZYnUfPneRpSyc18jfT7HzX\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol\":{\"keccak256\":\"0x19dcbf5e1bfaa413b6800ad84ffedd2989b401cede299f009ff62c33e03ccfae\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://bb5cb7bee7de97770e374b4cad1265c636a740dc7a2013d686a89d9398ba3098\",\"dweb:/ipfs/QmSqhNkFwDtS1EnupbQWduDm78N6s8c1zqXf5aLqZF69Xx\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IStakeManager.sol\":{\"keccak256\":\"0x27535f3677a2c373862d8672725632fdcabdf5d0e784f80c158063f55be68b5a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://904ad156bf1cac29f9e13619ee0ee41e602b6cf1fafedea0a1d3be7a7accc654\",\"dweb:/ipfs/QmXVy5gfYXSWYFrkmL2u9jctZDXupiNWbif5tFVpVZMPww\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnTypes.sol\":{\"keccak256\":\"0xfc3ed2bbd925e24facf0c3bb96d57dd7fc5bcc4a684b5473f04e8d209b758805\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://cb57b5b38d3e588f119ae45174891f2049d1d0de160a12b81a20335cd8bf731b\",\"dweb:/ipfs/Qmf6xfbdLbTKEpnzxwnSaRy1YZJtLYTZh8URqry86oyoSU\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnUtils.sol\":{\"keccak256\":\"0x8616968305b6127f4cb43209502e074c3964230a66c703e6b8623b03e5ec6442\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://2b1f1163fee75613024b38c25e17649933919f4a47a5ba5e8c3ea046023eb1ad\",\"dweb:/ipfs/QmNWReZE8BQ82eXahdKjnNjQWHuH9L9wcTcnKgyV5ypKCa\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/MinLibBytes.sol\":{\"keccak256\":\"0xa61a3d8fcd89182975d0bd17b86c22b6affd2f7bf26db66b1ddb2ee396f122ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e0bc21e2c8c2f483aee9d5bc003fa77dc7afddbaa7cc99560581a416cfdef11\",\"dweb:/ipfs/QmbwLE7AJpoH2LVeeHxewq3tf1vXhLNUdYsubWxzDGKfTr\"]},\"/Users/alexf/gsn2/packages/contracts/solpp/utils/RLPReader.sol\":{\"keccak256\":\"0x551793fd4cfc28c644683fcb3e115b095641280097a851017972375757ba0bdd\",\"license\":\"APACHE-2.0\",\"urls\":[\"bzz-raw://5487e727313169259f851f9e861f7c5bc85782cb6f571c310b674eebf9e11934\",\"dweb:/ipfs/Qmax84TAhuEcv7g2wSRHVjgiWc6hUCH62qfCw1QqPb4K5a\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xd04b0f06e0666f29cf7cccc82894de541e19bb30a765b107b1e40bb7fe5f7d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b652499d098e88d8d878374616bb58434301061cae2253298b3f374044e0ddb\",\"dweb:/ipfs/QmbhAzctqo5jrSKU6idHdVyqfmzCcDbNUPvmx4GiXxfA6q\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900\",\"dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
    "bytecode": "0x610120604052602960c08181529062001e7e60e03980516200002a916000916020909101906200006a565b503480156200003857600080fd5b5060405162001ea738038062001ea78339810160408190526200005b9162000110565b60809190915260a05262000172565b828054620000789062000135565b90600052602060002090601f0160209004810192826200009c5760008555620000e7565b82601f10620000b757805160ff1916838001178555620000e7565b82800160010185558215620000e7579182015b82811115620000e7578251825591602001919060010190620000ca565b50620000f5929150620000f9565b5090565b5b80821115620000f55760008155600101620000fa565b600080604083850312156200012457600080fd5b505080516020909101519092909150565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051611cd1620001ad600039600081816101a40152818161047e01526105fb01526000818161011b015261068e0152611cd16000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a031365711610066578063a031365714610152578063a640bc7414610167578063ab456ccb1461017c578063f14fcbc81461018f578063fb509935146101a257600080fd5b806301ffc9a7146100a357806325896446146100cb57806347885781146100eb5780637f1a15bf146101195780638b29ee471461013f575b600080fd5b6100b66100b13660046117b3565b6101c8565b60405190151581526020015b60405180910390f35b6100de6100d93660046117dd565b6101ff565b6040516100c29190611a11565b61010b6100f936600461179a565b60016020526000908152604090205481565b6040519081526020016100c2565b7f000000000000000000000000000000000000000000000000000000000000000061010b565b6100b661014d3660046117dd565b6102bf565b61015a6102f2565b6040516100c291906119fe565b61017a6101753660046118fd565b610380565b005b61017a61018a36600461181f565b610502565b61017a61019d36600461179a565b610687565b7f000000000000000000000000000000000000000000000000000000000000000061010b565b60006001600160e01b03198216636c18d0d560e11b14806101f957506301ffc9a760e01b6001600160e01b03198316145b92915050565b61023a6040518060a00160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b6102448383610709565b15610277576102538383610730565b608086015260608501526001600160a01b03166040840152602083015281526101f9565b610281838361083b565b15610290576102538383610862565b61029a838361092c565b608086015260608501526001600160a01b031660408401526020830152815292915050565b60006102cb83836109fc565b806102db57506102db8383610709565b806102eb57506102eb838361083b565b9392505050565b600080546102ff90611bf3565b80601f016020809104026020016040519081016040528092919081815260200182805461032b90611bf3565b80156103785780601f1061034d57610100808354040283529160200191610378565b820191906000526020600020905b81548152906001019060200180831161035b57829003601f168201915b505050505081565b600080366040516103929291906119b2565b6040805191829003822060208301526001600160601b03193360601b169082015260540160408051601f1981840301815291815281516020928301206000818152600190935290822080549290559150336001600160a01b03146104eb578061042e5760405162461bcd60e51b81526020600482015260096024820152681b9bc818dbdb5b5a5d60ba1b60448201526064015b60405180910390fd5b4381106104785760405162461bcd60e51b81526020600482015260186024820152773932bb32b0b6103832b730b634bd32903a37b79039b7b7b760411b6044820152606401610425565b436104a37f000000000000000000000000000000000000000000000000000000000000000083611a86565b116104eb5760405162461bcd60e51b815260206004820152601860248201527772657665616c2070656e616c697a6520746f6f206c61746560401b6044820152606401610425565b6104f88888888888610a3a565b5050505050505050565b600080366040516105149291906119b2565b6040805191829003822060208301526001600160601b03193360601b169082015260540160408051601f1981840301815291815281516020928301206000818152600190935290822080549290559150336001600160a01b031461066857806105ab5760405162461bcd60e51b81526020600482015260096024820152681b9bc818dbdb5b5a5d60ba1b6044820152606401610425565b4381106105f55760405162461bcd60e51b81526020600482015260186024820152773932bb32b0b6103832b730b634bd32903a37b79039b7b7b760411b6044820152606401610425565b436106207f000000000000000000000000000000000000000000000000000000000000000083611a86565b116106685760405162461bcd60e51b815260206004820152601860248201527772657665616c2070656e616c697a6520746f6f206c61746560401b6044820152606401610425565b6106798c8c8c8c8c8c8c8c8c610ba4565b505050505050505050505050565b60006106b37f000000000000000000000000000000000000000000000000000000000000000043611a86565b6000838152600160205260409081902082905551909150829033907fe3e71aede44b4dc2b562f1f86045529b7aadddc51e28f63a503f3b8ee937e16f906106fd9085815260200190565b60405180910390a35050565b60008282600081811061071e5761071e611c6f565b9091013560f81c600114949350505050565b6000808080606081610745876001818b611a5c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061078f925061078a9150849050610e16565b610e67565b90506107b4816001815181106107a7576107a7611c6f565b6020026020010151610fac565b6107ca826003815181106107a7576107a7611c6f565b6107ed836004815181106107e0576107e0611c6f565b6020026020010151610ffa565b610803846005815181106107a7576107a7611c6f565b6108268560068151811061081957610819611c6f565b6020026020010151611080565b939d929c50909a509850909650945050505050565b60008282600081811061085057610850611c6f565b9091013560f81c600214949350505050565b6000808080606081610877876001818b611a5c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509394506108bc925061078a9150849050610e16565b90506108d4816001815181106107a7576107a7611c6f565b6108ea826004815181106107a7576107a7611c6f565b610900836005815181106107e0576107e0611c6f565b610916846006815181106107a7576107a7611c6f565b6108268560078151811061081957610819611c6f565b6000806000806060600061097861078a89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1692505050565b9050610990816000815181106107a7576107a7611c6f565b6109a6826002815181106107a7576107a7611c6f565b6109bc836003815181106107e0576107e0611c6f565b6109d2846004815181106107a7576107a7611c6f565b6109e88560058151811061081957610819611c6f565b939c929b5090995097509095509350505050565b60008083836000818110610a1257610a12611c6f565b919091013560f81c91505060c08110801590610a32575060fe8160ff1611155b949350505050565b610a4485856102bf565b15610aed576000610a5586866101ff565b9050816001600160a01b031681604001516001600160a01b03161415610aeb576000610a84826080015161111a565b90506001600160e01b03198116633654317160e11b141580610ae85760405162461bcd60e51b815260206004820152601760248201527f4c6567616c2072656c6179207472616e73616374696f6e0000000000000000006044820152606401610425565b50505b505b6000610b4784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610b3892508a915089906119b2565b60405190819003902090611127565b90506001600160a01b038116610b925760405162461bcd60e51b815260206004820152601060248201526f1958dc9958dbdd995c8819985a5b195960821b6044820152606401610425565b610b9c818361114b565b505050505050565b6000610bef88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610b3892508e91508d906119b2565b90506000610c3c85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610b3892508b91508a906119b2565b9050806001600160a01b0316826001600160a01b031614610c925760405162461bcd60e51b815260206004820152601060248201526f2234b33332b932b73a1039b4b3b732b960811b6044820152606401610425565b6001600160a01b038216610cdb5760405162461bcd60e51b815260206004820152601060248201526f1958dc9958dbdd995c8819985a5b195960821b6044820152606401610425565b6000610ce78c8c6101ff565b90506000610cf589896101ff565b8051835191925014610d3b5760405162461bcd60e51b815260206004820152600f60248201526e446966666572656e74206e6f6e636560881b6044820152606401610425565b60008260800151836020015184604001518560600151604051602001610d6494939291906119c2565b604051602081830303815290604052905060008260800151836020015184604001518560600151604051602001610d9e94939291906119c2565b6040516020818303038152906040529050808051906020012082805190602001201415610dfb5760405162461bcd60e51b815260206004820152600b60248201526a1d1e081a5cc8195c5d585b60aa1b6044820152606401610425565b610e05868861114b565b505050505050505050505050505050565b60408051808201909152600080825260208201528151610e49575050604080518082019091526000808252602082015290565b50604080518082019091528151815260209182019181019190915290565b6060610e72826111a8565b610eae5760405162461bcd60e51b815260206004820152600d60248201526c1a5cd31a5cdd0819985a5b1959609a1b6044820152606401610425565b6000610eb9836111d3565b90508067ffffffffffffffff811115610ed457610ed4611c85565b604051908082528060200260200182016040528015610f1957816020015b6040805180820190915260008082526020820152815260200190600190039081610ef25790505b5091506000610f2b846020015161124b565b8460200151610f3a9190611a86565b90506000805b83811015610fa357610f51836112cc565b9150604051806040016040528083815260200184815250858281518110610f7a57610f7a611c6f565b6020908102919091010152610f8f8284611a86565b925080610f9b81611c28565b915050610f40565b50505050919050565b600080610fbc836020015161124b565b90506000818460000151610fd09190611b89565b90506000828560200151610fe49190611a86565b516020929092036101000a909104949350505050565b60006015826000015111156110775760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420524c504974656d2e2041646472657373657320617265206560448201527f6e636f64656420696e203230206279746573206f72206c6573730000000000006064820152608401610425565b6101f982610fac565b60606000611091836020015161124b565b905060008184600001516110a59190611b89565b905060008167ffffffffffffffff8111156110c2576110c2611c85565b6040519080825280601f01601f1916602001820160405280156110ec576020820181803683370190505b509050600081602001905061111184876020015161110a9190611a86565b828561135b565b50949350505050565b60006101f98260006113db565b6000806000611136858561144b565b9150915061114381611491565b509392505050565b604051633af34c6b60e21b81526001600160a01b03838116600483015233602483015282169063ebcd31ac90604401600060405180830381600087803b15801561119457600080fd5b505af1158015610b9c573d6000803e3d6000fd5b6020810151805160009190821a9060c08210156111c9575060009392505050565b5060019392505050565b6000806000905060006111e9846020015161124b565b84602001516111f89190611a86565b90506000846000015185602001516112109190611a86565b90505b8082101561124257611224826112cc565b61122e9083611a86565b91508261123a81611c28565b935050611213565b50909392505050565b8051600090811a60808110156112645750600092915050565b60b881108061127f575060c0811080159061127f575060f881105b1561128d5750600192915050565b60c08110156112ba576112a2600160b8611ba0565b6112af9060ff1682611b89565b6102eb906001611a86565b6112a2600160f8611ba0565b50919050565b8051600090811a60808110156112e55750600192915050565b60b88110156112f9576112af608082611b89565b60c08110156113265760b78103600184019350806020036101000a845104600182018101935050506112c6565b60f881101561133a576112af60c082611b89565b60019290920151602083900360f7016101000a900490910160f51901919050565b8061136557505050565b6020811061139d578251825261137c602084611a86565b9250611389602083611a86565b9150611396602082611b89565b9050611365565b80156113d657600060016113b2836020611b89565b6113be90610100611ae1565b6113c89190611b89565b845184518216911916178352505b505050565b60006113e8826004611a86565b835110156114385760405162461bcd60e51b815260206004820152601a60248201527f726561644279746573343a206461746120746f6f2073686f72740000000000006044820152606401610425565b5001602001516001600160e01b03191690565b6000808251604114156114825760208301516040840151606085015160001a6114768782858561164f565b9450945050505061148a565b506000905060025b9250929050565b60008160048111156114a5576114a5611c59565b14156114ae5750565b60018160048111156114c2576114c2611c59565b14156115105760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610425565b600281600481111561152457611524611c59565b14156115725760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610425565b600381600481111561158657611586611c59565b14156115df5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610425565b60048160048111156115f3576115f3611c59565b141561164c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610425565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156116865750600090506003611733565b8460ff16601b1415801561169e57508460ff16601c14155b156116af5750600090506004611733565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611703573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661172c57600060019250925050611733565b9150600090505b94509492505050565b60008083601f84011261174e57600080fd5b50813567ffffffffffffffff81111561176657600080fd5b60208301915083602082850101111561148a57600080fd5b80356001600160a01b038116811461179557600080fd5b919050565b6000602082840312156117ac57600080fd5b5035919050565b6000602082840312156117c557600080fd5b81356001600160e01b0319811681146102eb57600080fd5b600080602083850312156117f057600080fd5b823567ffffffffffffffff81111561180757600080fd5b6118138582860161173c565b90969095509350505050565b60008060008060008060008060008060c08b8d03121561183e57600080fd5b8a3567ffffffffffffffff8082111561185657600080fd5b6118628e838f0161173c565b909c509a5060208d013591508082111561187b57600080fd5b6118878e838f0161173c565b909a50985060408d01359150808211156118a057600080fd5b6118ac8e838f0161173c565b909850965060608d01359150808211156118c557600080fd5b506118d28d828e0161173c565b90955093506118e5905060808c0161177e565b915060a08b013590509295989b9194979a5092959850565b6000806000806000806080878903121561191657600080fd5b863567ffffffffffffffff8082111561192e57600080fd5b61193a8a838b0161173c565b9098509650602089013591508082111561195357600080fd5b5061196089828a0161173c565b909550935061197390506040880161177e565b9150606087013590509295509295509295565b6000815180845261199e816020860160208601611bc3565b601f01601f19169290920160200192915050565b8183823760009101908152919050565b600085516119d4818460208a01611bc3565b919091019384525060609190911b6001600160601b03191660208301526034820152605401919050565b6020815260006102eb6020830184611986565b60208152815160208201526020820151604082015260018060a01b036040830151166060820152606082015160808201526000608083015160a080840152610a3260c0840182611986565b60008085851115611a6c57600080fd5b83861115611a7957600080fd5b5050820193919092039150565b60008219821115611a9957611a99611c43565b500190565b600181815b80851115611ad9578160001904821115611abf57611abf611c43565b80851615611acc57918102915b93841c9390800290611aa3565b509250929050565b60006102eb8383600082611af7575060016101f9565b81611b04575060006101f9565b8160018114611b1a5760028114611b2457611b40565b60019150506101f9565b60ff841115611b3557611b35611c43565b50506001821b6101f9565b5060208310610133831016604e8410600b8410161715611b63575081810a6101f9565b611b6d8383611a9e565b8060001904821115611b8157611b81611c43565b029392505050565b600082821015611b9b57611b9b611c43565b500390565b600060ff821660ff841680821015611bba57611bba611c43565b90039392505050565b60005b83811015611bde578181015183820152602001611bc6565b83811115611bed576000848401525b50505050565b600181811c90821680611c0757607f821691505b602082108114156112c657634e487b7160e01b600052602260045260246000fd5b6000600019821415611c3c57611c3c611c43565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220b27174c5075fa5bf3e43eaa81b29f28f34cf0342639ac32d70a1d17b98e4263f64736f6c63430008070033332e302e302d626574612e332b6f70656e67736e2e70656e616c697a65722e6970656e616c697a6572",
    "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a031365711610066578063a031365714610152578063a640bc7414610167578063ab456ccb1461017c578063f14fcbc81461018f578063fb509935146101a257600080fd5b806301ffc9a7146100a357806325896446146100cb57806347885781146100eb5780637f1a15bf146101195780638b29ee471461013f575b600080fd5b6100b66100b13660046117b3565b6101c8565b60405190151581526020015b60405180910390f35b6100de6100d93660046117dd565b6101ff565b6040516100c29190611a11565b61010b6100f936600461179a565b60016020526000908152604090205481565b6040519081526020016100c2565b7f000000000000000000000000000000000000000000000000000000000000000061010b565b6100b661014d3660046117dd565b6102bf565b61015a6102f2565b6040516100c291906119fe565b61017a6101753660046118fd565b610380565b005b61017a61018a36600461181f565b610502565b61017a61019d36600461179a565b610687565b7f000000000000000000000000000000000000000000000000000000000000000061010b565b60006001600160e01b03198216636c18d0d560e11b14806101f957506301ffc9a760e01b6001600160e01b03198316145b92915050565b61023a6040518060a00160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b6102448383610709565b15610277576102538383610730565b608086015260608501526001600160a01b03166040840152602083015281526101f9565b610281838361083b565b15610290576102538383610862565b61029a838361092c565b608086015260608501526001600160a01b031660408401526020830152815292915050565b60006102cb83836109fc565b806102db57506102db8383610709565b806102eb57506102eb838361083b565b9392505050565b600080546102ff90611bf3565b80601f016020809104026020016040519081016040528092919081815260200182805461032b90611bf3565b80156103785780601f1061034d57610100808354040283529160200191610378565b820191906000526020600020905b81548152906001019060200180831161035b57829003601f168201915b505050505081565b600080366040516103929291906119b2565b6040805191829003822060208301526001600160601b03193360601b169082015260540160408051601f1981840301815291815281516020928301206000818152600190935290822080549290559150336001600160a01b03146104eb578061042e5760405162461bcd60e51b81526020600482015260096024820152681b9bc818dbdb5b5a5d60ba1b60448201526064015b60405180910390fd5b4381106104785760405162461bcd60e51b81526020600482015260186024820152773932bb32b0b6103832b730b634bd32903a37b79039b7b7b760411b6044820152606401610425565b436104a37f000000000000000000000000000000000000000000000000000000000000000083611a86565b116104eb5760405162461bcd60e51b815260206004820152601860248201527772657665616c2070656e616c697a6520746f6f206c61746560401b6044820152606401610425565b6104f88888888888610a3a565b5050505050505050565b600080366040516105149291906119b2565b6040805191829003822060208301526001600160601b03193360601b169082015260540160408051601f1981840301815291815281516020928301206000818152600190935290822080549290559150336001600160a01b031461066857806105ab5760405162461bcd60e51b81526020600482015260096024820152681b9bc818dbdb5b5a5d60ba1b6044820152606401610425565b4381106105f55760405162461bcd60e51b81526020600482015260186024820152773932bb32b0b6103832b730b634bd32903a37b79039b7b7b760411b6044820152606401610425565b436106207f000000000000000000000000000000000000000000000000000000000000000083611a86565b116106685760405162461bcd60e51b815260206004820152601860248201527772657665616c2070656e616c697a6520746f6f206c61746560401b6044820152606401610425565b6106798c8c8c8c8c8c8c8c8c610ba4565b505050505050505050505050565b60006106b37f000000000000000000000000000000000000000000000000000000000000000043611a86565b6000838152600160205260409081902082905551909150829033907fe3e71aede44b4dc2b562f1f86045529b7aadddc51e28f63a503f3b8ee937e16f906106fd9085815260200190565b60405180910390a35050565b60008282600081811061071e5761071e611c6f565b9091013560f81c600114949350505050565b6000808080606081610745876001818b611a5c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061078f925061078a9150849050610e16565b610e67565b90506107b4816001815181106107a7576107a7611c6f565b6020026020010151610fac565b6107ca826003815181106107a7576107a7611c6f565b6107ed836004815181106107e0576107e0611c6f565b6020026020010151610ffa565b610803846005815181106107a7576107a7611c6f565b6108268560068151811061081957610819611c6f565b6020026020010151611080565b939d929c50909a509850909650945050505050565b60008282600081811061085057610850611c6f565b9091013560f81c600214949350505050565b6000808080606081610877876001818b611a5c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509394506108bc925061078a9150849050610e16565b90506108d4816001815181106107a7576107a7611c6f565b6108ea826004815181106107a7576107a7611c6f565b610900836005815181106107e0576107e0611c6f565b610916846006815181106107a7576107a7611c6f565b6108268560078151811061081957610819611c6f565b6000806000806060600061097861078a89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e1692505050565b9050610990816000815181106107a7576107a7611c6f565b6109a6826002815181106107a7576107a7611c6f565b6109bc836003815181106107e0576107e0611c6f565b6109d2846004815181106107a7576107a7611c6f565b6109e88560058151811061081957610819611c6f565b939c929b5090995097509095509350505050565b60008083836000818110610a1257610a12611c6f565b919091013560f81c91505060c08110801590610a32575060fe8160ff1611155b949350505050565b610a4485856102bf565b15610aed576000610a5586866101ff565b9050816001600160a01b031681604001516001600160a01b03161415610aeb576000610a84826080015161111a565b90506001600160e01b03198116633654317160e11b141580610ae85760405162461bcd60e51b815260206004820152601760248201527f4c6567616c2072656c6179207472616e73616374696f6e0000000000000000006044820152606401610425565b50505b505b6000610b4784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610b3892508a915089906119b2565b60405190819003902090611127565b90506001600160a01b038116610b925760405162461bcd60e51b815260206004820152601060248201526f1958dc9958dbdd995c8819985a5b195960821b6044820152606401610425565b610b9c818361114b565b505050505050565b6000610bef88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610b3892508e91508d906119b2565b90506000610c3c85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610b3892508b91508a906119b2565b9050806001600160a01b0316826001600160a01b031614610c925760405162461bcd60e51b815260206004820152601060248201526f2234b33332b932b73a1039b4b3b732b960811b6044820152606401610425565b6001600160a01b038216610cdb5760405162461bcd60e51b815260206004820152601060248201526f1958dc9958dbdd995c8819985a5b195960821b6044820152606401610425565b6000610ce78c8c6101ff565b90506000610cf589896101ff565b8051835191925014610d3b5760405162461bcd60e51b815260206004820152600f60248201526e446966666572656e74206e6f6e636560881b6044820152606401610425565b60008260800151836020015184604001518560600151604051602001610d6494939291906119c2565b604051602081830303815290604052905060008260800151836020015184604001518560600151604051602001610d9e94939291906119c2565b6040516020818303038152906040529050808051906020012082805190602001201415610dfb5760405162461bcd60e51b815260206004820152600b60248201526a1d1e081a5cc8195c5d585b60aa1b6044820152606401610425565b610e05868861114b565b505050505050505050505050505050565b60408051808201909152600080825260208201528151610e49575050604080518082019091526000808252602082015290565b50604080518082019091528151815260209182019181019190915290565b6060610e72826111a8565b610eae5760405162461bcd60e51b815260206004820152600d60248201526c1a5cd31a5cdd0819985a5b1959609a1b6044820152606401610425565b6000610eb9836111d3565b90508067ffffffffffffffff811115610ed457610ed4611c85565b604051908082528060200260200182016040528015610f1957816020015b6040805180820190915260008082526020820152815260200190600190039081610ef25790505b5091506000610f2b846020015161124b565b8460200151610f3a9190611a86565b90506000805b83811015610fa357610f51836112cc565b9150604051806040016040528083815260200184815250858281518110610f7a57610f7a611c6f565b6020908102919091010152610f8f8284611a86565b925080610f9b81611c28565b915050610f40565b50505050919050565b600080610fbc836020015161124b565b90506000818460000151610fd09190611b89565b90506000828560200151610fe49190611a86565b516020929092036101000a909104949350505050565b60006015826000015111156110775760405162461bcd60e51b815260206004820152603a60248201527f496e76616c696420524c504974656d2e2041646472657373657320617265206560448201527f6e636f64656420696e203230206279746573206f72206c6573730000000000006064820152608401610425565b6101f982610fac565b60606000611091836020015161124b565b905060008184600001516110a59190611b89565b905060008167ffffffffffffffff8111156110c2576110c2611c85565b6040519080825280601f01601f1916602001820160405280156110ec576020820181803683370190505b509050600081602001905061111184876020015161110a9190611a86565b828561135b565b50949350505050565b60006101f98260006113db565b6000806000611136858561144b565b9150915061114381611491565b509392505050565b604051633af34c6b60e21b81526001600160a01b03838116600483015233602483015282169063ebcd31ac90604401600060405180830381600087803b15801561119457600080fd5b505af1158015610b9c573d6000803e3d6000fd5b6020810151805160009190821a9060c08210156111c9575060009392505050565b5060019392505050565b6000806000905060006111e9846020015161124b565b84602001516111f89190611a86565b90506000846000015185602001516112109190611a86565b90505b8082101561124257611224826112cc565b61122e9083611a86565b91508261123a81611c28565b935050611213565b50909392505050565b8051600090811a60808110156112645750600092915050565b60b881108061127f575060c0811080159061127f575060f881105b1561128d5750600192915050565b60c08110156112ba576112a2600160b8611ba0565b6112af9060ff1682611b89565b6102eb906001611a86565b6112a2600160f8611ba0565b50919050565b8051600090811a60808110156112e55750600192915050565b60b88110156112f9576112af608082611b89565b60c08110156113265760b78103600184019350806020036101000a845104600182018101935050506112c6565b60f881101561133a576112af60c082611b89565b60019290920151602083900360f7016101000a900490910160f51901919050565b8061136557505050565b6020811061139d578251825261137c602084611a86565b9250611389602083611a86565b9150611396602082611b89565b9050611365565b80156113d657600060016113b2836020611b89565b6113be90610100611ae1565b6113c89190611b89565b845184518216911916178352505b505050565b60006113e8826004611a86565b835110156114385760405162461bcd60e51b815260206004820152601a60248201527f726561644279746573343a206461746120746f6f2073686f72740000000000006044820152606401610425565b5001602001516001600160e01b03191690565b6000808251604114156114825760208301516040840151606085015160001a6114768782858561164f565b9450945050505061148a565b506000905060025b9250929050565b60008160048111156114a5576114a5611c59565b14156114ae5750565b60018160048111156114c2576114c2611c59565b14156115105760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610425565b600281600481111561152457611524611c59565b14156115725760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610425565b600381600481111561158657611586611c59565b14156115df5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610425565b60048160048111156115f3576115f3611c59565b141561164c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610425565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156116865750600090506003611733565b8460ff16601b1415801561169e57508460ff16601c14155b156116af5750600090506004611733565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611703573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661172c57600060019250925050611733565b9150600090505b94509492505050565b60008083601f84011261174e57600080fd5b50813567ffffffffffffffff81111561176657600080fd5b60208301915083602082850101111561148a57600080fd5b80356001600160a01b038116811461179557600080fd5b919050565b6000602082840312156117ac57600080fd5b5035919050565b6000602082840312156117c557600080fd5b81356001600160e01b0319811681146102eb57600080fd5b600080602083850312156117f057600080fd5b823567ffffffffffffffff81111561180757600080fd5b6118138582860161173c565b90969095509350505050565b60008060008060008060008060008060c08b8d03121561183e57600080fd5b8a3567ffffffffffffffff8082111561185657600080fd5b6118628e838f0161173c565b909c509a5060208d013591508082111561187b57600080fd5b6118878e838f0161173c565b909a50985060408d01359150808211156118a057600080fd5b6118ac8e838f0161173c565b909850965060608d01359150808211156118c557600080fd5b506118d28d828e0161173c565b90955093506118e5905060808c0161177e565b915060a08b013590509295989b9194979a5092959850565b6000806000806000806080878903121561191657600080fd5b863567ffffffffffffffff8082111561192e57600080fd5b61193a8a838b0161173c565b9098509650602089013591508082111561195357600080fd5b5061196089828a0161173c565b909550935061197390506040880161177e565b9150606087013590509295509295509295565b6000815180845261199e816020860160208601611bc3565b601f01601f19169290920160200192915050565b8183823760009101908152919050565b600085516119d4818460208a01611bc3565b919091019384525060609190911b6001600160601b03191660208301526034820152605401919050565b6020815260006102eb6020830184611986565b60208152815160208201526020820151604082015260018060a01b036040830151166060820152606082015160808201526000608083015160a080840152610a3260c0840182611986565b60008085851115611a6c57600080fd5b83861115611a7957600080fd5b5050820193919092039150565b60008219821115611a9957611a99611c43565b500190565b600181815b80851115611ad9578160001904821115611abf57611abf611c43565b80851615611acc57918102915b93841c9390800290611aa3565b509250929050565b60006102eb8383600082611af7575060016101f9565b81611b04575060006101f9565b8160018114611b1a5760028114611b2457611b40565b60019150506101f9565b60ff841115611b3557611b35611c43565b50506001821b6101f9565b5060208310610133831016604e8410600b8410161715611b63575081810a6101f9565b611b6d8383611a9e565b8060001904821115611b8157611b81611c43565b029392505050565b600082821015611b9b57611b9b611c43565b500390565b600060ff821660ff841680821015611bba57611bba611c43565b90039392505050565b60005b83811015611bde578181015183820152602001611bc6565b83811115611bed576000848401525b50505050565b600181811c90821680611c0757607f821691505b602082108114156112c657634e487b7160e01b600052602260045260246000fd5b6000600019821415611c3c57611c3c611c43565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220b27174c5075fa5bf3e43eaa81b29f28f34cf0342639ac32d70a1d17b98e4263f64736f6c63430008070033",
    "immutableReferences": {
        "582": [
            {
                "length": 32,
                "start": 283
            },
            {
                "length": 32,
                "start": 1678
            }
        ],
        "584": [
            {
                "length": 32,
                "start": 420
            },
            {
                "length": 32,
                "start": 1150
            },
            {
                "length": 32,
                "start": 1531
            }
        ]
    },
    "sourceMap": "612:85:3:-:0;504:7084;612:85;;504:7084;612:85;;;504:7084;612:85;;;;;;;;;;;;;;;:::i;:::-;;812:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;919:40;;;;;969:50;;504:7084;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;504:7084:3;;;-1:-1:-1;504:7084:3;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:245:63;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;-1:-1:-1;;193:16:63;;249:2;234:18;;;228:25;193:16;;228:25;;-1:-1:-1;14:245:63:o;264:380::-;343:1;339:12;;;;386;;;407:61;;461:4;453:6;449:17;439:27;;407:61;514:2;506:6;503:14;483:18;480:38;477:161;;;560:10;555:3;551:20;548:1;541:31;595:4;592:1;585:15;623:4;620:1;613:15;477:161;;264:380;;;:::o;:::-;504:7084:3;;;;;;;;;;;;;;",
    "deployedSourceMap": "504:7084:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1060:223;;;;;;:::i;:::-;;:::i;:::-;;;5692:14:63;;5685:22;5667:41;;5655:2;5640:18;1060:223:3;;;;;;;;2575:902;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3483:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;12522:25:63;;;12510:2;12495:18;3483:42:3;12376:177:63;1320:116:3;1411:18;1320:116;;2233:224;;;;;;:::i;:::-;;:::i;612:85::-;;;:::i;:::-;;;;;;;:::i;6370:303::-;;;;;;:::i;:::-;;:::i;:::-;;4615:393;;;;;;:::i;:::-;;:::i;3563:247::-;;;;;;:::i;:::-;;:::i;1473:126::-;1569:23;1473:126;;1060:223;1162:4;-1:-1:-1;;;;;;1185:43:3;;-1:-1:-1;;;1185:43:3;;:91;;-1:-1:-1;;;;;;;;;;937:40:58;;;1240:36:3;1178:98;1060:223;-1:-1:-1;;1060:223:3:o;2575:902::-;2654:30;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:30:3;2700:34;2719:14;;2700:18;:34::i;:::-;2696:747;;;2895:48;2928:14;;2895:32;:48::i;:::-;2875:16;;;2750:193;2844:17;;;2750:193;-1:-1:-1;;;;;2750:193:3;2816:14;;;2750:193;2782:20;;;2750:193;;;2696:747;;;2964:34;2983:14;;2964:18;:34::i;:::-;2960:483;;;3159:48;3192:14;;3159:32;:48::i;2960:483::-;3383:49;3417:14;;3383:33;:49::i;:::-;3363:16;;;3238:194;3332:17;;;3238:194;-1:-1:-1;;;;;3238:194:3;3304:14;;;3238:194;3270:20;;;3238:194;;;2575:902;;;;:::o;2233:224::-;2316:4;2339:35;2359:14;;2339:19;:35::i;:::-;:73;;;;2378:34;2397:14;;2378:18;:34::i;:::-;2339:111;;;;2416:34;2435:14;;2416:18;:34::i;:::-;2332:118;2233:224;-1:-1:-1;;;2233:224:3:o;612:85::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6370:303::-;3959:18;4017:8;;4007:19;;;;;;;:::i;:::-;;;;;;;;;;3990:49;;;4228:19:63;-1:-1:-1;;;;;;4028:10:3;4285:2:63;4281:15;4277:53;4263:12;;;4256:75;4347:12;;3990:49:3;;;-1:-1:-1;;3990:49:3;;;;;;;;;3980:60;;3990:49;3980:60;;;;4050:24;4077:19;;;:7;:19;;;;;;;;4106:26;;;3980:60;-1:-1:-1;4261:10:3;-1:-1:-1;;;;;4261:40:3;4258:303;;4325:21;4317:43;;;;-1:-1:-1;;;4317:43:3;;7613:2:63;4317:43:3;;;7595:21:63;7652:1;7632:18;;;7625:29;-1:-1:-1;;;7670:18:63;;;7663:39;7719:18;;4317:43:3;;;;;;;;;4401:12;4382:16;:31;4374:68;;;;-1:-1:-1;;;4374:68:3;;7950:2:63;4374:68:3;;;7932:21:63;7989:2;7969:18;;;7962:30;-1:-1:-1;;;8008:18:63;;;8001:54;8072:18;;4374:68:3;7748:348:63;4374:68:3;4509:12;4464:42;4483:23;4464:16;:42;:::i;:::-;:57;4456:94;;;;-1:-1:-1;;;4456:94:3;;10907:2:63;4456:94:3;;;10889:21:63;10946:2;10926:18;;;10919:30;-1:-1:-1;;;10965:18:63;;;10958:54;11029:18;;4456:94:3;10705:348:63;4456:94:3;6611:55:::1;6639:10;;6651:9;;6662:3;6611:27;:55::i;:::-;3949:629:::0;;6370:303;;;;;;:::o;4615:393::-;3959:18;4017:8;;4007:19;;;;;;;:::i;:::-;;;;;;;;;;3990:49;;;4228:19:63;-1:-1:-1;;;;;;4028:10:3;4285:2:63;4281:15;4277:53;4263:12;;;4256:75;4347:12;;3990:49:3;;;-1:-1:-1;;3990:49:3;;;;;;;;;3980:60;;3990:49;3980:60;;;;4050:24;4077:19;;;:7;:19;;;;;;;;4106:26;;;3980:60;-1:-1:-1;4261:10:3;-1:-1:-1;;;;;4261:40:3;4258:303;;4325:21;4317:43;;;;-1:-1:-1;;;4317:43:3;;7613:2:63;4317:43:3;;;7595:21:63;7652:1;7632:18;;;7625:29;-1:-1:-1;;;7670:18:63;;;7663:39;7719:18;;4317:43:3;7411:332:63;4317:43:3;4401:12;4382:16;:31;4374:68;;;;-1:-1:-1;;;4374:68:3;;7950:2:63;4374:68:3;;;7932:21:63;7989:2;7969:18;;;7962:30;-1:-1:-1;;;8008:18:63;;;8001:54;8072:18;;4374:68:3;7748:348:63;4374:68:3;4509:12;4464:42;4483:23;4464:16;:42;:::i;:::-;:57;4456:94;;;;-1:-1:-1;;;4456:94:3;;10907:2:63;4456:94:3;;;10889:21:63;10946:2;10926:18;;;10919:30;-1:-1:-1;;;10965:18:63;;;10958:54;11029:18;;4456:94:3;10705:348:63;4456:94:3;4924:77:::1;4947:11;;4960:10;;4972:11;;4985:10;;4997:3;4924:22;:77::i;:::-;3949:629:::0;;4615:393;;;;;;;;;;:::o;3563:247::-;3627:24;3654:33;3669:18;3654:12;:33;:::i;:::-;3697:19;;;;:7;:19;;;;;;;:38;;;3750:53;3627:60;;-1:-1:-1;3705:10:3;;3762;;3750:53;;;;3627:60;12522:25:63;;12510:2;12495:18;;12376:177;3750:53:3;;;;;;;;3617:193;3563:247;:::o;1846:143::-;1928:4;1958:14;;1973:1;1958:17;;;;;;;:::i;:::-;;;;;;;1980:1;1952:29;;1846:143;-1:-1:-1;;;;1846:143:3:o;1378:437:42:-;1464:4;;;;1491:12;1464:4;1537:39;:14;1552:1;1537:14;;:39;:::i;:::-;1514:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1514:62:42;;-1:-1:-1;1622:28:42;;-1:-1:-1;1622:19:42;;-1:-1:-1;1514:62:42;;-1:-1:-1;1622:17:42;:19::i;:::-;:26;:28::i;:::-;1586:64;;1705:18;:6;1712:1;1705:9;;;;;;;;:::i;:::-;;;;;;;:16;:18::i;:::-;1725;:6;1732:1;1725:9;;;;;;;;:::i;:18::-;1745:21;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;;;:19;:21::i;:::-;1768:18;:6;1775:1;1768:9;;;;;;;;:::i;:18::-;1788:19;:6;1795:1;1788:9;;;;;;;;:::i;:::-;;;;;;;:17;:19::i;:::-;1697:111;;;;-1:-1:-1;1697:111:42;;-1:-1:-1;1697:111:42;-1:-1:-1;1697:111:42;;-1:-1:-1;1378:437:42;-1:-1:-1;;;;;1378:437:42:o;1995:143:3:-;2077:4;2107:14;;2122:1;2107:17;;;;;;;:::i;:::-;;;;;;;2129:1;2101:29;;1995:143;-1:-1:-1;;;;1995:143:3:o;2048:437:42:-;2134:4;;;;2161:12;2134:4;2207:39;:14;2222:1;2207:14;;:39;:::i;:::-;2184:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2184:62:42;;-1:-1:-1;2292:28:42;;-1:-1:-1;2292:19:42;;-1:-1:-1;2184:62:42;;-1:-1:-1;2292:17:42;:19::i;:28::-;2256:64;;2375:18;:6;2382:1;2375:9;;;;;;;;:::i;:18::-;2395;:6;2402:1;2395:9;;;;;;;;:::i;:18::-;2415:21;:6;2422:1;2415:9;;;;;;;;:::i;:21::-;2438:18;:6;2445:1;2438:9;;;;;;;;:::i;:18::-;2458:19;:6;2465:1;2458:9;;;;;;;;:::i;817:373::-;904:4;910;916:7;925:4;931:12;954:33;990:35;:26;:14;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;990:24:42;;-1:-1:-1;;;990:26:42:i;:35::-;954:71;;1080:18;:6;1087:1;1080:9;;;;;;;;:::i;:18::-;1100;:6;1107:1;1100:9;;;;;;;;:::i;:18::-;1120:21;:6;1127:1;1120:9;;;;;;;;:::i;:21::-;1143:18;:6;1150:1;1143:9;;;;;;;;:::i;:18::-;1163:19;:6;1170:1;1163:9;;;;;;;;:::i;:19::-;1072:111;;;;-1:-1:-1;1072:111:42;;-1:-1:-1;1072:111:42;-1:-1:-1;1072:111:42;;-1:-1:-1;817:373:42;-1:-1:-1;;;;817:373:42:o;1605:235:3:-;1688:4;1704:25;1738:14;;1753:1;1738:17;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;1797:4:3;1774:27;;;;;:58;;;1828:4;1805:19;:27;;;;1774:58;1766:67;1605:235;-1:-1:-1;;;;1605:235:3:o;6679:776::-;6844:34;6867:10;;6844:22;:34::i;:::-;6840:455;;;6894:28;6925:29;6943:10;;6925:17;:29::i;:::-;6894:60;;6996:3;-1:-1:-1;;;;;6972:28:3;:9;:12;;;-1:-1:-1;;;;;6972:28:3;;6968:317;;;7020:15;7038:37;7060:9;:14;;;7038:21;:37::i;:::-;7020:55;-1:-1:-1;;;;;;;7118:40:3;;-1:-1:-1;;;7118:40:3;;;7176:94;;;;-1:-1:-1;;;7176:94:3;;7261:2:63;7176:94:3;;;7243:21:63;7300:2;7280:18;;;7273:30;7339:25;7319:18;;;7312:53;7382:18;;7176:94:3;7059:347:63;7176:94:3;7002:283;;6968:317;6880:415;6840:455;7304:13;7320:40;7350:9;;7320:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7320:21:3;;;;-1:-1:-1;7330:10:3;;-1:-1:-1;7330:10:3;;7320:21;:::i;:::-;;;;;;;;;;:29;:40::i;:::-;7304:56;-1:-1:-1;;;;;;7378:19:3;;7370:48;;;;-1:-1:-1;;;7370:48:3;;11615:2:63;7370:48:3;;;11597:21:63;11654:2;11634:18;;;11627:30;-1:-1:-1;;;11673:18:63;;;11666:46;11729:18;;7370:48:3;11413:340:63;7370:48:3;7428:20;7437:5;7444:3;7428:8;:20::i;:::-;6830:625;6679:776;;;;;:::o;5014:1319::-;5243:13;5259:42;5290:10;;5259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5259:22:3;;;;-1:-1:-1;5269:11:3;;-1:-1:-1;5269:11:3;;5259:22;:::i;:42::-;5243:58;;5311:13;5327:42;5358:10;;5327:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5327:22:3;;;;-1:-1:-1;5337:11:3;;-1:-1:-1;5337:11:3;;5327:22;:::i;:42::-;5311:58;;5397:5;-1:-1:-1;;;;;5388:14:3;:5;-1:-1:-1;;;;;5388:14:3;;5380:43;;;;-1:-1:-1;;;5380:43:3;;9477:2:63;5380:43:3;;;9459:21:63;9516:2;9496:18;;;9489:30;-1:-1:-1;;;9535:18:63;;;9528:46;9591:18;;5380:43:3;9275:340:63;5380:43:3;-1:-1:-1;;;;;5441:19:3;;5433:48;;;;-1:-1:-1;;;5433:48:3;;11615:2:63;5433:48:3;;;11597:21:63;11654:2;11634:18;;;11627:30;-1:-1:-1;;;11673:18:63;;;11666:46;11729:18;;5433:48:3;11413:340:63;5433:48:3;5492:29;5524:30;5542:11;;5524:17;:30::i;:::-;5492:62;;5564:29;5596:30;5614:11;;5596:17;:30::i;:::-;5906:16;;5886;;5564:62;;-1:-1:-1;5886:36:3;5878:64;;;;-1:-1:-1;;;5878:64:3;;9133:2:63;5878:64:3;;;9115:21:63;9172:2;9152:18;;;9145:30;-1:-1:-1;;;9191:18:63;;;9184:45;9246:18;;5878:64:3;8931:339:63;5878:64:3;5953:25;6006:10;:15;;;6023:10;:19;;;6044:10;:13;;;6059:10;:16;;;5989:87;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5953:123;;6087:25;6140:10;:15;;;6157:10;:19;;;6178:10;:13;;;6193:10;:16;;;6123:87;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6087:123;;6266:12;6256:23;;;;;;6239:12;6229:23;;;;;;:50;;6221:74;;;;-1:-1:-1;;;6221:74:3;;9822:2:63;6221:74:3;;;9804:21:63;9861:2;9841:18;;;9834:30;-1:-1:-1;;;9880:18:63;;;9873:41;9931:18;;6221:74:3;9620:335:63;6221:74:3;6306:20;6315:5;6322:3;6306:8;:20::i;:::-;5233:1100;;;;;;5014:1319;;;;;;;;;:::o;2541:281:42:-;-1:-1:-1;;;;;;;;;;;;;;;;;2632:11:42;;2628:54;;-1:-1:-1;;2669:13:42;;;;;;;;;-1:-1:-1;2669:13:42;;;;;;;;2541:281::o;2628:54::-;-1:-1:-1;2787:28:42;;;;;;;;;2795:11;;2787:28;;2756:4;2746:15;;;2787:28;;;;;;;;2541:281::o;2885:488::-;2945:23;2988:12;2995:4;2988:6;:12::i;:::-;2980:38;;;;-1:-1:-1;;;2980:38:42;;10565:2:63;2980:38:42;;;10547:21:63;10604:2;10584:18;;;10577:30;-1:-1:-1;;;10623:18:63;;;10616:43;10676:18;;2980:38:42;10363:337:63;2980:38:42;3028:10;3041:14;3050:4;3041:8;:14::i;:::-;3028:27;;3088:5;3074:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;3074:20:42;;;;;;;;;;;;;;;;3065:29;;3104:11;3132:27;3147:4;:11;;;3132:14;:27::i;:::-;3118:4;:11;;;:41;;;;:::i;:::-;3104:55;-1:-1:-1;3169:12:42;;3191:176;3212:5;3208:1;:9;3191:176;;;3248:19;3260:6;3248:11;:19::i;:::-;3238:29;;3293:24;;;;;;;;3301:7;3293:24;;;;3310:6;3293:24;;;3281:6;3288:1;3281:9;;;;;;;;:::i;:::-;;;;;;;;;;:36;3340:16;3349:7;3340:6;:16;:::i;:::-;3331:25;-1:-1:-1;3219:3:42;;;;:::i;:::-;;;;3191:176;;;;2970:403;;;2885:488;;;:::o;7092:377::-;7152:4;7168:11;7182:27;7197:4;:11;;;7182:14;:27::i;:::-;7168:41;;7219:8;7241:6;7230:4;:8;;;:17;;;;:::i;:::-;7219:28;;7257:11;7285:6;7271:4;:11;;;:20;;;;:::i;:::-;7359:13;7387:2;7383:12;;;;7378:3;7374:22;7355:42;;;;7092:377;-1:-1:-1;;;;7092:377:42:o;6803:283::-;6866:7;6967:2;6955:4;:8;;;:14;;6947:85;;;;-1:-1:-1;;;6947:85:42;;8303:2:63;6947:85:42;;;8285:21:63;8342:2;8322:18;;;8315:30;8381:34;8361:18;;;8354:62;8452:28;8432:18;;;8425:56;8498:19;;6947:85:42;8101:422:63;6947:85:42;7065:12;7072:4;7065:6;:12::i;7475:405::-;7536:12;7560:11;7574:27;7589:4;:11;;;7574:14;:27::i;:::-;7560:41;;7611:8;7633:6;7622:4;:8;;;:17;;;;:::i;:::-;7611:28;;7672:19;7704:3;7694:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7694:14:42;;7672:36;;7718:12;7784:6;7778:4;7774:17;7763:28;;7810:40;7829:6;7815:4;:11;;;:20;;;;:::i;:::-;7837:7;7846:3;7810:4;:40::i;:::-;-1:-1:-1;7867:6:42;7475:405;-1:-1:-1;;;;7475:405:42:o;1308:133:40:-;1375:6;1400:34;1423:7;1432:1;1400:22;:34::i;3759:227:57:-;3837:7;3857:17;3876:18;3898:27;3909:4;3915:9;3898:10;:27::i;:::-;3856:69;;;;3935:18;3947:5;3935:11;:18::i;:::-;-1:-1:-1;3970:9:57;3759:227;-1:-1:-1;;;3759:227:57:o;7461:125:3:-;7533:46;;-1:-1:-1;;;7533:46:3;;-1:-1:-1;;;;;5448:15:63;;;7533:46:3;;;5430:34:63;7567:10:3;5480:18:63;;;5473:43;7533:12:3;;;;;5365:18:63;;7533:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3504:287:42;3615:11;;;;3676:13;;3564:4;;3668:22;;;;298:4;3713:24;;3709:54;;;-1:-1:-1;3758:5:42;;3504:287;-1:-1:-1;;;3504:287:42:o;3709:54::-;-1:-1:-1;3780:4:42;;3504:287;-1:-1:-1;;;3504:287:42:o;3859:386::-;3921:4;3937:10;3950:1;3937:14;;3961:12;3990:27;4005:4;:11;;;3990:14;:27::i;:::-;3976:4;:11;;;:41;;;;:::i;:::-;3961:56;;4027:11;4055:4;:8;;;4041:4;:11;;;:22;;;;:::i;:::-;4027:36;;4073:144;4090:6;4080:7;:16;4073:144;;;4132:20;4144:7;4132:11;:20::i;:::-;4122:30;;:7;:30;:::i;:::-;4112:40;-1:-1:-1;4199:7:42;;;;:::i;:::-;;;;4073:144;;;-1:-1:-1;4233:5:42;;3859:386;-1:-1:-1;;;3859:386:42:o;5542:537::-;5678:13;;5602:4;;5670:22;;209:4;5715:26;;5711:361;;;-1:-1:-1;5762:1:42;;5542:537;-1:-1:-1;;5542:537:42:o;5711:361::-;254:4;5782:25;;;:83;;-1:-1:-1;298:4:42;5812:25;;;;;:52;;-1:-1:-1;341:4:42;5841:23;;5812:52;5778:294;;;-1:-1:-1;5886:1:42;;5542:537;-1:-1:-1;;5542:537:42:o;5778:294::-;298:4;5906:24;;5902:170;;;5979:21;5999:1;254:4;5979:21;:::i;:::-;5970:31;;;;:5;:31;:::i;:::-;:35;;6004:1;5970:35;:::i;5902:170::-;6048:19;6066:1;341:4;6048:19;:::i;5902:170::-;5608:471;5542:537;;;:::o;4293:1198::-;4430:13;;4350:8;;4422:22;;209:4;4467:26;;4463:1022;;;-1:-1:-1;4514:1:42;;4293:1198;-1:-1:-1;;4293:1198:42:o;4463:1022::-;254:4;4534:25;;4530:955;;;4580:26;209:4;4580:5;:26;:::i;4530:955::-;298:4;4629:24;;4625:860;;;4722:4;4715:5;4711:16;4806:1;4798:6;4794:14;4784:24;;4940:7;4936:2;4932:16;4927:3;4923:26;4914:6;4908:13;4904:46;5033:1;5024:7;5020:15;5011:7;5007:29;5000:36;;;;4625:860;;;341:4;5078:23;;5074:411;;;5124:24;298:4;5124:5;:24;:::i;5074:411::-;5288:1;5276:14;;;;5326:13;5354:2;5350:16;;;5244:4;5350:16;5345:3;5341:26;5322:46;;5432:29;;;-1:-1:-1;;5432:29:42;;4293:1198;-1:-1:-1;4293:1198:42:o;8033:759::-;8106:8;8102:21;;8033:759;;;:::o;8102:21::-;378:2;8187:16;;8180:194;;8277:10;;8264:24;;8316:16;378:2;8283:3;8316:16;:::i;:::-;;-1:-1:-1;8346:17:42;378:2;8346:17;;:::i;:::-;;-1:-1:-1;8205:16:42;378:2;8205:16;;:::i;:::-;;;8180:194;;;8388:7;;8384:402;;8495:9;8534:1;8515:15;8527:3;378:2;8515:15;:::i;:::-;8507:24;;:3;:24;:::i;:::-;:28;;;;:::i;:::-;8595:10;;8670:11;;8666:22;;8607:9;;8591:26;8740:21;8727:35;;-1:-1:-1;8384:402:42;8033:759;;;:::o;2483:571:41:-;2603:13;2652:9;:5;2660:1;2652:9;:::i;:::-;2640:1;:8;:21;;2632:60;;;;-1:-1:-1;;;2632:60:41;;11260:2:63;2632:60:41;;;11242:21:63;11299:2;11279:18;;;11272:30;11338:28;11318:18;;;11311:56;11384:18;;2632:60:41;11058:350:63;2632:60:41;-1:-1:-1;2787:21:41;2804:2;2787:21;2781:28;-1:-1:-1;;;;;;2936:79:41;;2483:571::o;2243:730:57:-;2324:7;2333:12;2361:9;:16;2381:2;2361:22;2357:610;;;2697:4;2682:20;;2676:27;2746:4;2731:20;;2725:27;2803:4;2788:20;;2782:27;2399:9;2774:36;2844:25;2855:4;2774:36;2676:27;2725;2844:10;:25::i;:::-;2837:32;;;;;;;;;2357:610;-1:-1:-1;2916:1:57;;-1:-1:-1;2920:35:57;2357:610;2243:730;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;;;:::i;:::-;;612:561;;;548:631;:::o;612:561::-;721:29;712:5;:38;;;;;;;;:::i;:::-;;708:465;;;766:34;;-1:-1:-1;;;766:34:57;;6548:2:63;766:34:57;;;6530:21:63;6587:2;6567:18;;;6560:30;6626:26;6606:18;;;6599:54;6670:18;;766:34:57;6346:348:63;708:465:57;830:35;821:5;:44;;;;;;;;:::i;:::-;;817:356;;;881:41;;-1:-1:-1;;;881:41:57;;6901:2:63;881:41:57;;;6883:21:63;6940:2;6920:18;;;6913:30;6979:33;6959:18;;;6952:61;7030:18;;881:41:57;6699:355:63;817:356:57;952:30;943:5;:39;;;;;;;;:::i;:::-;;939:234;;;998:44;;-1:-1:-1;;;998:44:57;;8730:2:63;998:44:57;;;8712:21:63;8769:2;8749:18;;;8742:30;8808:34;8788:18;;;8781:62;-1:-1:-1;;;8859:18:63;;;8852:32;8901:19;;998:44:57;8528:398:63;939:234:57;1072:30;1063:5;:39;;;;;;;;:::i;:::-;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:57;;10162:2:63;1118:44:57;;;10144:21:63;10201:2;10181:18;;;10174:30;10240:34;10220:18;;;10213:62;-1:-1:-1;;;10291:18:63;;;10284:32;10333:19;;1118:44:57;9960:398:63;1059:114:57;548:631;:::o;5167:1603::-;5293:7;;6217:66;6204:79;;6200:161;;;-1:-1:-1;6315:1:57;;-1:-1:-1;6319:30:57;6299:51;;6200:161;6374:1;:7;;6379:2;6374:7;;:18;;;;;6385:1;:7;;6390:2;6385:7;;6374:18;6370:100;;;-1:-1:-1;6424:1:57;;-1:-1:-1;6428:30:57;6408:51;;6370:100;6581:24;;;6564:14;6581:24;;;;;;;;;5946:25:63;;;6019:4;6007:17;;5987:18;;;5980:45;;;;6041:18;;;6034:34;;;6084:18;;;6077:34;;;6581:24:57;;5918:19:63;;6581:24:57;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6581:24:57;;-1:-1:-1;;6581:24:57;;;-1:-1:-1;;;;;;;6619:20:57;;6615:101;;6671:1;6675:29;6655:50;;;;;;;6615:101;6734:6;-1:-1:-1;6742:20:57;;-1:-1:-1;5167:1603:57;;;;;;;;:::o;14:347:63:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:63;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;366:184;445:20;;-1:-1:-1;;;;;494:31:63;;484:42;;474:70;;540:1;537;530:12;474:70;366:184;;;:::o;555:180::-;614:6;667:2;655:9;646:7;642:23;638:32;635:52;;;683:1;680;673:12;635:52;-1:-1:-1;706:23:63;;555:180;-1:-1:-1;555:180:63:o;740:286::-;798:6;851:2;839:9;830:7;826:23;822:32;819:52;;;867:1;864;857:12;819:52;893:23;;-1:-1:-1;;;;;;945:32:63;;935:43;;925:71;;992:1;989;982:12;1031:409;1101:6;1109;1162:2;1150:9;1141:7;1137:23;1133:32;1130:52;;;1178:1;1175;1168:12;1130:52;1218:9;1205:23;1251:18;1243:6;1240:30;1237:50;;;1283:1;1280;1273:12;1237:50;1322:58;1372:7;1363:6;1352:9;1348:22;1322:58;:::i;:::-;1399:8;;1296:84;;-1:-1:-1;1031:409:63;-1:-1:-1;;;;1031:409:63:o;1445:1465::-;1611:6;1619;1627;1635;1643;1651;1659;1667;1675;1683;1736:3;1724:9;1715:7;1711:23;1707:33;1704:53;;;1753:1;1750;1743:12;1704:53;1793:9;1780:23;1822:18;1863:2;1855:6;1852:14;1849:34;;;1879:1;1876;1869:12;1849:34;1918:58;1968:7;1959:6;1948:9;1944:22;1918:58;:::i;:::-;1995:8;;-1:-1:-1;1892:84:63;-1:-1:-1;2083:2:63;2068:18;;2055:32;;-1:-1:-1;2099:16:63;;;2096:36;;;2128:1;2125;2118:12;2096:36;2167:60;2219:7;2208:8;2197:9;2193:24;2167:60;:::i;:::-;2246:8;;-1:-1:-1;2141:86:63;-1:-1:-1;2334:2:63;2319:18;;2306:32;;-1:-1:-1;2350:16:63;;;2347:36;;;2379:1;2376;2369:12;2347:36;2418:60;2470:7;2459:8;2448:9;2444:24;2418:60;:::i;:::-;2497:8;;-1:-1:-1;2392:86:63;-1:-1:-1;2585:2:63;2570:18;;2557:32;;-1:-1:-1;2601:16:63;;;2598:36;;;2630:1;2627;2620:12;2598:36;;2669:60;2721:7;2710:8;2699:9;2695:24;2669:60;:::i;:::-;2748:8;;-1:-1:-1;2643:86:63;-1:-1:-1;2802:50:63;;-1:-1:-1;2847:3:63;2832:19;;2802:50;:::i;:::-;2792:60;;2899:3;2888:9;2884:19;2871:33;2861:43;;1445:1465;;;;;;;;;;;;;:::o;2915:889::-;3041:6;3049;3057;3065;3073;3081;3134:3;3122:9;3113:7;3109:23;3105:33;3102:53;;;3151:1;3148;3141:12;3102:53;3191:9;3178:23;3220:18;3261:2;3253:6;3250:14;3247:34;;;3277:1;3274;3267:12;3247:34;3316:58;3366:7;3357:6;3346:9;3342:22;3316:58;:::i;:::-;3393:8;;-1:-1:-1;3290:84:63;-1:-1:-1;3481:2:63;3466:18;;3453:32;;-1:-1:-1;3497:16:63;;;3494:36;;;3526:1;3523;3516:12;3494:36;;3565:60;3617:7;3606:8;3595:9;3591:24;3565:60;:::i;:::-;3644:8;;-1:-1:-1;3539:86:63;-1:-1:-1;3698:49:63;;-1:-1:-1;3743:2:63;3728:18;;3698:49;:::i;:::-;3688:59;;3794:2;3783:9;3779:18;3766:32;3756:42;;2915:889;;;;;;;;:::o;3809:257::-;3850:3;3888:5;3882:12;3915:6;3910:3;3903:19;3931:63;3987:6;3980:4;3975:3;3971:14;3964:4;3957:5;3953:16;3931:63;:::i;:::-;4048:2;4027:15;-1:-1:-1;;4023:29:63;4014:39;;;;4055:4;4010:50;;3809:257;-1:-1:-1;;3809:257:63:o;4370:271::-;4553:6;4545;4540:3;4527:33;4509:3;4579:16;;4604:13;;;4579:16;4370:271;-1:-1:-1;4370:271:63:o;4646:551::-;4859:3;4897:6;4891:13;4913:53;4959:6;4954:3;4947:4;4939:6;4935:17;4913:53;:::i;:::-;4988:16;;;;5013:21;;;-1:-1:-1;5076:2:63;5072:15;;;;-1:-1:-1;;;;;;5068:53:63;5061:4;5050:16;;5043:79;5149:2;5138:14;;5131:30;5188:2;5177:14;;4646:551;-1:-1:-1;4646:551:63:o;6122:219::-;6271:2;6260:9;6253:21;6234:4;6291:44;6331:2;6320:9;6316:18;6308:6;6291:44;:::i;11758:613::-;11945:2;11934:9;11927:21;11990:6;11984:13;11979:2;11968:9;11964:18;11957:41;12052:2;12044:6;12040:15;12034:22;12029:2;12018:9;12014:18;12007:50;12138:1;12134;12129:3;12125:11;12121:19;12115:2;12107:6;12103:15;12097:22;12093:48;12088:2;12077:9;12073:18;12066:76;12197:2;12189:6;12185:15;12179:22;12173:3;12162:9;12158:19;12151:51;11908:4;12249:3;12241:6;12237:16;12231:23;12292:4;12285;12274:9;12270:20;12263:34;12314:51;12360:3;12349:9;12345:19;12331:12;12314:51;:::i;12558:331::-;12663:9;12674;12716:8;12704:10;12701:24;12698:44;;;12738:1;12735;12728:12;12698:44;12767:6;12757:8;12754:20;12751:40;;;12787:1;12784;12777:12;12751:40;-1:-1:-1;;12813:23:63;;;12858:25;;;;;-1:-1:-1;12558:331:63:o;12894:128::-;12934:3;12965:1;12961:6;12958:1;12955:13;12952:39;;;12971:18;;:::i;:::-;-1:-1:-1;13007:9:63;;12894:128::o;13027:422::-;13116:1;13159:5;13116:1;13173:270;13194:7;13184:8;13181:21;13173:270;;;13253:4;13249:1;13245:6;13241:17;13235:4;13232:27;13229:53;;;13262:18;;:::i;:::-;13312:7;13302:8;13298:22;13295:55;;;13332:16;;;;13295:55;13411:22;;;;13371:15;;;;13173:270;;;13177:3;13027:422;;;;;:::o;13454:131::-;13514:5;13543:36;13570:8;13564:4;13639:5;13669:8;13659:80;;-1:-1:-1;13710:1:63;13724:5;;13659:80;13758:4;13748:76;;-1:-1:-1;13795:1:63;13809:5;;13748:76;13840:4;13858:1;13853:59;;;;13926:1;13921:130;;;;13833:218;;13853:59;13883:1;13874:10;;13897:5;;;13921:130;13958:3;13948:8;13945:17;13942:43;;;13965:18;;:::i;:::-;-1:-1:-1;;14021:1:63;14007:16;;14036:5;;13833:218;;14135:2;14125:8;14122:16;14116:3;14110:4;14107:13;14103:36;14097:2;14087:8;14084:16;14079:2;14073:4;14070:12;14066:35;14063:77;14060:159;;;-1:-1:-1;14172:19:63;;;14204:5;;14060:159;14251:34;14276:8;14270:4;14251:34;:::i;:::-;14321:6;14317:1;14313:6;14309:19;14300:7;14297:32;14294:58;;;14332:18;;:::i;:::-;14370:20;;13590:806;-1:-1:-1;;;13590:806:63:o;14401:125::-;14441:4;14469:1;14466;14463:8;14460:34;;;14474:18;;:::i;:::-;-1:-1:-1;14511:9:63;;14401:125::o;14531:195::-;14569:4;14606;14603:1;14599:12;14638:4;14635:1;14631:12;14663:3;14658;14655:12;14652:38;;;14670:18;;:::i;:::-;14707:13;;;14531:195;-1:-1:-1;;;14531:195:63:o;14731:258::-;14803:1;14813:113;14827:6;14824:1;14821:13;14813:113;;;14903:11;;;14897:18;14884:11;;;14877:39;14849:2;14842:10;14813:113;;;14944:6;14941:1;14938:13;14935:48;;;14979:1;14970:6;14965:3;14961:16;14954:27;14935:48;;14731:258;;;:::o;14994:380::-;15073:1;15069:12;;;;15116;;;15137:61;;15191:4;15183:6;15179:17;15169:27;;15137:61;15244:2;15236:6;15233:14;15213:18;15210:38;15207:161;;;15290:10;15285:3;15281:20;15278:1;15271:31;15325:4;15322:1;15315:15;15353:4;15350:1;15343:15;15379:135;15418:3;-1:-1:-1;;15439:17:63;;15436:43;;;15459:18;;:::i;:::-;-1:-1:-1;15506:1:63;15495:13;;15379:135::o;15519:127::-;15580:10;15575:3;15571:20;15568:1;15561:31;15611:4;15608:1;15601:15;15635:4;15632:1;15625:15;15651:127;15712:10;15707:3;15703:20;15700:1;15693:31;15743:4;15740:1;15733:15;15767:4;15764:1;15757:15;15783:127;15844:10;15839:3;15835:20;15832:1;15825:31;15875:4;15872:1;15865:15;15899:4;15896:1;15889:15;15915:127;15976:10;15971:3;15967:20;15964:1;15957:31;16007:4;16004:1;15997:15;16031:4;16028:1;16021:15",
    "source": "pragma solidity ^0.8.0;\npragma abicoder v2;\n\n// SPDX-License-Identifier: GPL-3.0-only\n\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\nimport \"./utils/RLPReader.sol\";\nimport \"./utils/GsnUtils.sol\";\nimport \"./interfaces/IRelayHub.sol\";\nimport \"./interfaces/IPenalizer.sol\";\n\n/**\n * @title The Penalizer Implementation\n *\n * @notice This Penalizer supports parsing Legacy, Type 1 and Type 2 raw RLP Encoded transactions.\n */\ncontract Penalizer is IPenalizer, ERC165 {\n    using ECDSA for bytes32;\n\n    /// @inheritdoc IPenalizer\n    string public override versionPenalizer = \"3.0.0-beta.3+opengsn.penalizer.ipenalizer\";\n\n    uint256 internal immutable penalizeBlockDelay;\n    uint256 internal immutable penalizeBlockExpiration;\n\n    constructor(\n        uint256 _penalizeBlockDelay,\n        uint256 _penalizeBlockExpiration\n    ) {\n        penalizeBlockDelay = _penalizeBlockDelay;\n        penalizeBlockExpiration = _penalizeBlockExpiration;\n    }\n\n    /// @inheritdoc IERC165\n    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) {\n        return interfaceId == type(IPenalizer).interfaceId ||\n        super.supportsInterface(interfaceId);\n    }\n\n    /// @inheritdoc IPenalizer\n    function getPenalizeBlockDelay() external override view returns (uint256) {\n        return penalizeBlockDelay;\n    }\n\n    /// @inheritdoc IPenalizer\n    function getPenalizeBlockExpiration() external override view returns (uint256) {\n        return penalizeBlockExpiration;\n    }\n\n    function isLegacyTransaction(bytes calldata rawTransaction) internal pure returns (bool) {\n        uint8 transactionTypeByte = uint8(rawTransaction[0]);\n        return (transactionTypeByte >= 0xc0 && transactionTypeByte <= 0xfe);\n    }\n\n    function isTransactionType1(bytes calldata rawTransaction) internal pure returns (bool) {\n        return (uint8(rawTransaction[0]) == 1);\n    }\n\n    function isTransactionType2(bytes calldata rawTransaction) internal pure returns (bool) {\n        return (uint8(rawTransaction[0]) == 2);\n    }\n\n    /// @return `true` if raw transaction is of types Legacy, 1 or 2. `false` otherwise.\n    function isTransactionTypeValid(bytes calldata rawTransaction) public pure returns(bool) {\n        return isLegacyTransaction(rawTransaction) || isTransactionType1(rawTransaction) || isTransactionType2(rawTransaction);\n    }\n\n    /// @return transaction The details that the `Penalizer` needs to decide if the transaction is penalizable.\n    function decodeTransaction(bytes calldata rawTransaction) public pure returns (Transaction memory transaction) {\n        if (isTransactionType1(rawTransaction)) {\n            (transaction.nonce,\n            transaction.gasLimit,\n            transaction.to,\n            transaction.value,\n            transaction.data) = RLPReader.decodeTransactionType1(rawTransaction);\n        } else if (isTransactionType2(rawTransaction)) {\n            (transaction.nonce,\n            transaction.gasLimit,\n            transaction.to,\n            transaction.value,\n            transaction.data) = RLPReader.decodeTransactionType2(rawTransaction);\n        } else {\n            (transaction.nonce,\n            transaction.gasLimit,\n            transaction.to,\n            transaction.value,\n            transaction.data) = RLPReader.decodeLegacyTransaction(rawTransaction);\n        }\n        return transaction;\n    }\n\n    mapping(bytes32 => uint256) public commits;\n\n    /// @inheritdoc IPenalizer\n    function commit(bytes32 commitHash) external override {\n        uint256 readyBlockNumber = block.number + penalizeBlockDelay;\n        commits[commitHash] = readyBlockNumber;\n        emit CommitAdded(msg.sender, commitHash, readyBlockNumber);\n    }\n\n    /// Modifier that verifies there was a `commit` operation before this call that has not expired yet.\n    modifier commitRevealOnly() {\n        bytes32 commitHash = keccak256(abi.encodePacked(keccak256(msg.data), msg.sender));\n        uint256 readyBlockNumber = commits[commitHash];\n        delete commits[commitHash];\n        // msg.sender can only be fake during off-chain view call, allowing Penalizer process to check transactions\n        if(msg.sender != address(type(uint160).max)) {\n            require(readyBlockNumber != 0, \"no commit\");\n            require(readyBlockNumber < block.number, \"reveal penalize too soon\");\n            require(readyBlockNumber + penalizeBlockExpiration > block.number, \"reveal penalize too late\");\n        }\n        _;\n    }\n\n    /// @inheritdoc IPenalizer\n    function penalizeRepeatedNonce(\n        bytes calldata unsignedTx1,\n        bytes calldata signature1,\n        bytes calldata unsignedTx2,\n        bytes calldata signature2,\n        IRelayHub hub,\n        uint256 randomValue\n    )\n    public\n    override\n    commitRevealOnly {\n        (randomValue);\n        _penalizeRepeatedNonce(unsignedTx1, signature1, unsignedTx2, signature2, hub);\n    }\n\n    function _penalizeRepeatedNonce(\n        bytes calldata unsignedTx1,\n        bytes calldata signature1,\n        bytes calldata unsignedTx2,\n        bytes calldata signature2,\n        IRelayHub hub\n    )\n    private\n    {\n        address addr1 = keccak256(unsignedTx1).recover(signature1);\n        address addr2 = keccak256(unsignedTx2).recover(signature2);\n\n        require(addr1 == addr2, \"Different signer\");\n        require(addr1 != address(0), \"ecrecover failed\");\n\n        Transaction memory decodedTx1 = decodeTransaction(unsignedTx1);\n        Transaction memory decodedTx2 = decodeTransaction(unsignedTx2);\n\n        // checking that the same nonce is used in both transaction, with both signed by the same address\n        // and the actual data is different\n        // note: we compare the hash of the tx to save gas over iterating both byte arrays\n        require(decodedTx1.nonce == decodedTx2.nonce, \"Different nonce\");\n\n        bytes memory dataToCheck1 =\n        abi.encodePacked(decodedTx1.data, decodedTx1.gasLimit, decodedTx1.to, decodedTx1.value);\n\n        bytes memory dataToCheck2 =\n        abi.encodePacked(decodedTx2.data, decodedTx2.gasLimit, decodedTx2.to, decodedTx2.value);\n\n        require(keccak256(dataToCheck1) != keccak256(dataToCheck2), \"tx is equal\");\n\n        penalize(addr1, hub);\n    }\n\n    /// @inheritdoc IPenalizer\n    function penalizeIllegalTransaction(\n        bytes calldata unsignedTx,\n        bytes calldata signature,\n        IRelayHub hub,\n        uint256 randomValue\n    )\n    public\n    override\n    commitRevealOnly {\n        (randomValue);\n        _penalizeIllegalTransaction(unsignedTx, signature, hub);\n    }\n\n    function _penalizeIllegalTransaction(\n        bytes calldata unsignedTx,\n        bytes calldata signature,\n        IRelayHub hub\n    )\n    private\n    {\n        if (isTransactionTypeValid(unsignedTx)) {\n            Transaction memory decodedTx = decodeTransaction(unsignedTx);\n            if (decodedTx.to == address(hub)) {\n                bytes4 selector = GsnUtils.getMethodSig(decodedTx.data);\n                bool isWrongMethodCall = selector != IRelayHub.relayCall.selector;\n                require(\n                    isWrongMethodCall,\n                    \"Legal relay transaction\");\n            }\n        }\n        address relay = keccak256(unsignedTx).recover(signature);\n        require(relay != address(0), \"ecrecover failed\");\n        penalize(relay, hub);\n    }\n\n    function penalize(address relayWorker, IRelayHub hub) private {\n        hub.penalize(relayWorker, payable(msg.sender));\n    }\n}",
    "sourcePath": "/Users/alexf/gsn2/packages/contracts/solpp/Penalizer.sol",
    "ast": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/Penalizer.sol",
        "exportedSymbols": {
            "ECDSA": [
                12122
            ],
            "ERC165": [
                12146
            ],
            "GsnTypes": [
                8492
            ],
            "GsnUtils": [
                8572
            ],
            "IERC165": [
                12352
            ],
            "IERC20": [
                10849
            ],
            "IForwarder": [
                5129
            ],
            "IPenalizer": [
                5528
            ],
            "IRelayHub": [
                5896
            ],
            "IStakeManager": [
                6284
            ],
            "MinLibBytes": [
                8687
            ],
            "Penalizer": [
                1177
            ],
            "RLPReader": [
                9409
            ],
            "Strings": [
                11734
            ]
        },
        "id": 1178,
        "license": "GPL-3.0-only",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 560,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:3"
            },
            {
                "id": 561,
                "literals": [
                    "abicoder",
                    "v2"
                ],
                "nodeType": "PragmaDirective",
                "src": "24:19:3"
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
                "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
                "id": 562,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 12123,
                "src": "87:62:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                "id": 563,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 12147,
                "src": "150:64:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/RLPReader.sol",
                "file": "./utils/RLPReader.sol",
                "id": 564,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 9410,
                "src": "216:31:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnUtils.sol",
                "file": "./utils/GsnUtils.sol",
                "id": 565,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 8573,
                "src": "248:30:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol",
                "file": "./interfaces/IRelayHub.sol",
                "id": 566,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 5897,
                "src": "279:36:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IPenalizer.sol",
                "file": "./interfaces/IPenalizer.sol",
                "id": 567,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 5529,
                "src": "316:37:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 569,
                            "name": "IPenalizer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5528,
                            "src": "526:10:3"
                        },
                        "id": 570,
                        "nodeType": "InheritanceSpecifier",
                        "src": "526:10:3"
                    },
                    {
                        "baseName": {
                            "id": 571,
                            "name": "ERC165",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12146,
                            "src": "538:6:3"
                        },
                        "id": 572,
                        "nodeType": "InheritanceSpecifier",
                        "src": "538:6:3"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 568,
                    "nodeType": "StructuredDocumentation",
                    "src": "355:148:3",
                    "text": " @title The Penalizer Implementation\n @notice This Penalizer supports parsing Legacy, Type 1 and Type 2 raw RLP Encoded transactions."
                },
                "fullyImplemented": true,
                "id": 1177,
                "linearizedBaseContracts": [
                    1177,
                    12146,
                    5528,
                    12352
                ],
                "name": "Penalizer",
                "nameLocation": "513:9:3",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 575,
                        "libraryName": {
                            "id": 573,
                            "name": "ECDSA",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12122,
                            "src": "557:5:3"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "551:24:3",
                        "typeName": {
                            "id": 574,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "567:7:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                            }
                        }
                    },
                    {
                        "baseFunctions": [
                            5515
                        ],
                        "constant": false,
                        "documentation": {
                            "id": 576,
                            "nodeType": "StructuredDocumentation",
                            "src": "581:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "a0313657",
                        "id": 580,
                        "mutability": "mutable",
                        "name": "versionPenalizer",
                        "nameLocation": "635:16:3",
                        "nodeType": "VariableDeclaration",
                        "overrides": {
                            "id": 578,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "626:8:3"
                        },
                        "scope": 1177,
                        "src": "612:85:3",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 577,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "612:6:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": {
                            "hexValue": "332e302e302d626574612e332b6f70656e67736e2e70656e616c697a65722e6970656e616c697a6572",
                            "id": 579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "654:43:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9b10702e39ed62542b11af35eee84af9b8e9bc03eafc19bf310fcc73bf76591c",
                                "typeString": "literal_string \"3.0.0-beta.3+opengsn.penalizer.ipenalizer\""
                            },
                            "value": "3.0.0-beta.3+opengsn.penalizer.ipenalizer"
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 582,
                        "mutability": "immutable",
                        "name": "penalizeBlockDelay",
                        "nameLocation": "731:18:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1177,
                        "src": "704:45:3",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 581,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "704:7:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 584,
                        "mutability": "immutable",
                        "name": "penalizeBlockExpiration",
                        "nameLocation": "782:23:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1177,
                        "src": "755:50:3",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 583,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "755:7:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 599,
                            "nodeType": "Block",
                            "src": "909:117:3",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 593,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 591,
                                            "name": "penalizeBlockDelay",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 582,
                                            "src": "919:18:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 592,
                                            "name": "_penalizeBlockDelay",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 586,
                                            "src": "940:19:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "919:40:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 594,
                                    "nodeType": "ExpressionStatement",
                                    "src": "919:40:3"
                                },
                                {
                                    "expression": {
                                        "id": 597,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 595,
                                            "name": "penalizeBlockExpiration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 584,
                                            "src": "969:23:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 596,
                                            "name": "_penalizeBlockExpiration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 588,
                                            "src": "995:24:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "969:50:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 598,
                                    "nodeType": "ExpressionStatement",
                                    "src": "969:50:3"
                                }
                            ]
                        },
                        "id": 600,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 589,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 586,
                                    "mutability": "mutable",
                                    "name": "_penalizeBlockDelay",
                                    "nameLocation": "841:19:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 600,
                                    "src": "833:27:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 585,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "833:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 588,
                                    "mutability": "mutable",
                                    "name": "_penalizeBlockExpiration",
                                    "nameLocation": "878:24:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 600,
                                    "src": "870:32:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 587,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "870:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "823:85:3"
                        },
                        "returnParameters": {
                            "id": 590,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "909:0:3"
                        },
                        "scope": 1177,
                        "src": "812:214:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            12145,
                            12351
                        ],
                        "body": {
                            "id": 623,
                            "nodeType": "Block",
                            "src": "1168:115:3",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 621,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            },
                                            "id": 616,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 611,
                                                "name": "interfaceId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 603,
                                                "src": "1185:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 613,
                                                            "name": "IPenalizer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5528,
                                                            "src": "1205:10:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IPenalizer_$5528_$",
                                                                "typeString": "type(contract IPenalizer)"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_type$_t_contract$_IPenalizer_$5528_$",
                                                                "typeString": "type(contract IPenalizer)"
                                                            }
                                                        ],
                                                        "id": 612,
                                                        "name": "type",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967269,
                                                        "src": "1200:4:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                            "typeString": "function () pure"
                                                        }
                                                    },
                                                    "id": 614,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1200:16:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IPenalizer_$5528",
                                                        "typeString": "type(contract IPenalizer)"
                                                    }
                                                },
                                                "id": 615,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "interfaceId",
                                                "nodeType": "MemberAccess",
                                                "src": "1200:28:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            "src": "1185:43:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "id": 619,
                                                    "name": "interfaceId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 603,
                                                    "src": "1264:11:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 617,
                                                    "name": "super",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967271,
                                                    "src": "1240:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_super$_Penalizer_$1177_$",
                                                        "typeString": "type(contract super Penalizer)"
                                                    }
                                                },
                                                "id": 618,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "supportsInterface",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12145,
                                                "src": "1240:23:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                                    "typeString": "function (bytes4) view returns (bool)"
                                                }
                                            },
                                            "id": 620,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1240:36:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "1185:91:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 610,
                                    "id": 622,
                                    "nodeType": "Return",
                                    "src": "1178:98:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 601,
                            "nodeType": "StructuredDocumentation",
                            "src": "1032:23:3",
                            "text": "@inheritdoc IERC165"
                        },
                        "functionSelector": "01ffc9a7",
                        "id": 624,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "supportsInterface",
                        "nameLocation": "1069:17:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 607,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [
                                {
                                    "id": 605,
                                    "name": "IERC165",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 12352,
                                    "src": "1136:7:3"
                                },
                                {
                                    "id": 606,
                                    "name": "ERC165",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 12146,
                                    "src": "1145:6:3"
                                }
                            ],
                            "src": "1127:25:3"
                        },
                        "parameters": {
                            "id": 604,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 603,
                                    "mutability": "mutable",
                                    "name": "interfaceId",
                                    "nameLocation": "1094:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 624,
                                    "src": "1087:18:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                    },
                                    "typeName": {
                                        "id": 602,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1087:6:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1086:20:3"
                        },
                        "returnParameters": {
                            "id": 610,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 609,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 624,
                                    "src": "1162:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 608,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1162:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1161:6:3"
                        },
                        "scope": 1177,
                        "src": "1060:223:3",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5521
                        ],
                        "body": {
                            "id": 633,
                            "nodeType": "Block",
                            "src": "1394:42:3",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 631,
                                        "name": "penalizeBlockDelay",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 582,
                                        "src": "1411:18:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 630,
                                    "id": 632,
                                    "nodeType": "Return",
                                    "src": "1404:25:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 625,
                            "nodeType": "StructuredDocumentation",
                            "src": "1289:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "7f1a15bf",
                        "id": 634,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getPenalizeBlockDelay",
                        "nameLocation": "1329:21:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 627,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1362:8:3"
                        },
                        "parameters": {
                            "id": 626,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1350:2:3"
                        },
                        "returnParameters": {
                            "id": 630,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 629,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 634,
                                    "src": "1385:7:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 628,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1385:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1384:9:3"
                        },
                        "scope": 1177,
                        "src": "1320:116:3",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            5527
                        ],
                        "body": {
                            "id": 643,
                            "nodeType": "Block",
                            "src": "1552:47:3",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 641,
                                        "name": "penalizeBlockExpiration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 584,
                                        "src": "1569:23:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 640,
                                    "id": 642,
                                    "nodeType": "Return",
                                    "src": "1562:30:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 635,
                            "nodeType": "StructuredDocumentation",
                            "src": "1442:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "fb509935",
                        "id": 644,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getPenalizeBlockExpiration",
                        "nameLocation": "1482:26:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 637,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1520:8:3"
                        },
                        "parameters": {
                            "id": 636,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1508:2:3"
                        },
                        "returnParameters": {
                            "id": 640,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 639,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 644,
                                    "src": "1543:7:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 638,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1543:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1542:9:3"
                        },
                        "scope": 1177,
                        "src": "1473:126:3",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 669,
                            "nodeType": "Block",
                            "src": "1694:146:3",
                            "statements": [
                                {
                                    "assignments": [
                                        652
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 652,
                                            "mutability": "mutable",
                                            "name": "transactionTypeByte",
                                            "nameLocation": "1710:19:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 669,
                                            "src": "1704:25:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            },
                                            "typeName": {
                                                "id": 651,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1704:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 659,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 655,
                                                    "name": "rawTransaction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 646,
                                                    "src": "1738:14:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                },
                                                "id": 657,
                                                "indexExpression": {
                                                    "hexValue": "30",
                                                    "id": 656,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1753:1:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1738:17:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                }
                                            ],
                                            "id": 654,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1732:5:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint8_$",
                                                "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                                "id": 653,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1732:5:3",
                                                "typeDescriptions": {}
                                            }
                                        },
                                        "id": 658,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1732:24:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1704:52:3"
                                },
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 666,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    },
                                                    "id": 662,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 660,
                                                        "name": "transactionTypeByte",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 652,
                                                        "src": "1774:19:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "hexValue": "30786330",
                                                        "id": 661,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1797:4:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_192_by_1",
                                                            "typeString": "int_const 192"
                                                        },
                                                        "value": "0xc0"
                                                    },
                                                    "src": "1774:27:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    },
                                                    "id": 665,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 663,
                                                        "name": "transactionTypeByte",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 652,
                                                        "src": "1805:19:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "hexValue": "30786665",
                                                        "id": 664,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1828:4:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_254_by_1",
                                                            "typeString": "int_const 254"
                                                        },
                                                        "value": "0xfe"
                                                    },
                                                    "src": "1805:27:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "1774:58:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "id": 667,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1773:60:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 650,
                                    "id": 668,
                                    "nodeType": "Return",
                                    "src": "1766:67:3"
                                }
                            ]
                        },
                        "id": 670,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isLegacyTransaction",
                        "nameLocation": "1614:19:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 647,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 646,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "1649:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 670,
                                    "src": "1634:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 645,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1634:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1633:31:3"
                        },
                        "returnParameters": {
                            "id": 650,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 649,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 670,
                                    "src": "1688:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 648,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1688:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1687:6:3"
                        },
                        "scope": 1177,
                        "src": "1605:235:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 687,
                            "nodeType": "Block",
                            "src": "1934:55:3",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "id": 684,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 679,
                                                                "name": "rawTransaction",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 672,
                                                                "src": "1958:14:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            },
                                                            "id": 681,
                                                            "indexExpression": {
                                                                "hexValue": "30",
                                                                "id": 680,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1973:1:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "1958:17:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        ],
                                                        "id": 678,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "1952:5:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint8_$",
                                                            "typeString": "type(uint8)"
                                                        },
                                                        "typeName": {
                                                            "id": 677,
                                                            "name": "uint8",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1952:5:3",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 682,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1952:24:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 683,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1980:1:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                },
                                                "src": "1952:29:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "id": 685,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1951:31:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 676,
                                    "id": 686,
                                    "nodeType": "Return",
                                    "src": "1944:38:3"
                                }
                            ]
                        },
                        "id": 688,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isTransactionType1",
                        "nameLocation": "1855:18:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 673,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 672,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "1889:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 688,
                                    "src": "1874:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 671,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1874:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1873:31:3"
                        },
                        "returnParameters": {
                            "id": 676,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 675,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 688,
                                    "src": "1928:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 674,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1928:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1927:6:3"
                        },
                        "scope": 1177,
                        "src": "1846:143:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 705,
                            "nodeType": "Block",
                            "src": "2083:55:3",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "id": 702,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 697,
                                                                "name": "rawTransaction",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 690,
                                                                "src": "2107:14:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            },
                                                            "id": 699,
                                                            "indexExpression": {
                                                                "hexValue": "30",
                                                                "id": 698,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2122:1:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2107:17:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        ],
                                                        "id": 696,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "2101:5:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint8_$",
                                                            "typeString": "type(uint8)"
                                                        },
                                                        "typeName": {
                                                            "id": 695,
                                                            "name": "uint8",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2101:5:3",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 700,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2101:24:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "hexValue": "32",
                                                    "id": 701,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2129:1:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_2_by_1",
                                                        "typeString": "int_const 2"
                                                    },
                                                    "value": "2"
                                                },
                                                "src": "2101:29:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "id": 703,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2100:31:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 694,
                                    "id": 704,
                                    "nodeType": "Return",
                                    "src": "2093:38:3"
                                }
                            ]
                        },
                        "id": 706,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isTransactionType2",
                        "nameLocation": "2004:18:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 691,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 690,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "2038:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 706,
                                    "src": "2023:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 689,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2023:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2022:31:3"
                        },
                        "returnParameters": {
                            "id": 694,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 693,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 706,
                                    "src": "2077:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 692,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2077:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2076:6:3"
                        },
                        "scope": 1177,
                        "src": "1995:143:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 726,
                            "nodeType": "Block",
                            "src": "2322:135:3",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 724,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "id": 720,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "arguments": [
                                                    {
                                                        "id": 715,
                                                        "name": "rawTransaction",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 709,
                                                        "src": "2359:14:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 714,
                                                    "name": "isLegacyTransaction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 670,
                                                    "src": "2339:19:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                        "typeString": "function (bytes calldata) pure returns (bool)"
                                                    }
                                                },
                                                "id": 716,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2339:35:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "||",
                                            "rightExpression": {
                                                "arguments": [
                                                    {
                                                        "id": 718,
                                                        "name": "rawTransaction",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 709,
                                                        "src": "2397:14:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 717,
                                                    "name": "isTransactionType1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 688,
                                                    "src": "2378:18:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                        "typeString": "function (bytes calldata) pure returns (bool)"
                                                    }
                                                },
                                                "id": 719,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2378:34:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "src": "2339:73:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "id": 722,
                                                    "name": "rawTransaction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 709,
                                                    "src": "2435:14:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                ],
                                                "id": 721,
                                                "name": "isTransactionType2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 706,
                                                "src": "2416:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                    "typeString": "function (bytes calldata) pure returns (bool)"
                                                }
                                            },
                                            "id": 723,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2416:34:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "2339:111:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 713,
                                    "id": 725,
                                    "nodeType": "Return",
                                    "src": "2332:118:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 707,
                            "nodeType": "StructuredDocumentation",
                            "src": "2144:84:3",
                            "text": "@return `true` if raw transaction is of types Legacy, 1 or 2. `false` otherwise."
                        },
                        "functionSelector": "8b29ee47",
                        "id": 727,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isTransactionTypeValid",
                        "nameLocation": "2242:22:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 710,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 709,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "2280:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 727,
                                    "src": "2265:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 708,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2265:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2264:31:3"
                        },
                        "returnParameters": {
                            "id": 713,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 712,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 727,
                                    "src": "2316:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 711,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2316:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2315:6:3"
                        },
                        "scope": 1177,
                        "src": "2233:224:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 803,
                            "nodeType": "Block",
                            "src": "2686:791:3",
                            "statements": [
                                {
                                    "condition": {
                                        "arguments": [
                                            {
                                                "id": 737,
                                                "name": "rawTransaction",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 730,
                                                "src": "2719:14:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 736,
                                            "name": "isTransactionType1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 688,
                                            "src": "2700:18:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                "typeString": "function (bytes calldata) pure returns (bool)"
                                            }
                                        },
                                        "id": 738,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2700:34:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "arguments": [
                                                {
                                                    "id": 759,
                                                    "name": "rawTransaction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 730,
                                                    "src": "2983:14:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                ],
                                                "id": 758,
                                                "name": "isTransactionType2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 706,
                                                "src": "2964:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                    "typeString": "function (bytes calldata) pure returns (bool)"
                                                }
                                            },
                                            "id": 760,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2964:34:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseBody": {
                                            "id": 798,
                                            "nodeType": "Block",
                                            "src": "3224:219:3",
                                            "statements": [
                                                {
                                                    "expression": {
                                                        "id": 796,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "components": [
                                                                {
                                                                    "expression": {
                                                                        "id": 780,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3239:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 782,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "nonce",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5464,
                                                                    "src": "3239:17:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 783,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3270:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 784,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "gasLimit",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5466,
                                                                    "src": "3270:20:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 785,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3304:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 786,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "to",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5468,
                                                                    "src": "3304:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 787,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3332:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 788,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "value",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5470,
                                                                    "src": "3332:17:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 789,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3363:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 790,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "data",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5472,
                                                                    "src": "3363:16:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 791,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "nodeType": "TupleExpression",
                                                            "src": "3238:142:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "arguments": [
                                                                {
                                                                    "id": 794,
                                                                    "name": "rawTransaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 730,
                                                                    "src": "3417:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 792,
                                                                    "name": "RLPReader",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9409,
                                                                    "src": "3383:9:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_RLPReader_$9409_$",
                                                                        "typeString": "type(library RLPReader)"
                                                                    }
                                                                },
                                                                "id": 793,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "decodeLegacyTransaction",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 8774,
                                                                "src": "3383:33:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes calldata) pure returns (uint256,uint256,address,uint256,bytes memory)"
                                                                }
                                                            },
                                                            "id": 795,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3383:49:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "src": "3238:194:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 797,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "3238:194:3"
                                                }
                                            ]
                                        },
                                        "id": 799,
                                        "nodeType": "IfStatement",
                                        "src": "2960:483:3",
                                        "trueBody": {
                                            "id": 779,
                                            "nodeType": "Block",
                                            "src": "3000:218:3",
                                            "statements": [
                                                {
                                                    "expression": {
                                                        "id": 777,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "components": [
                                                                {
                                                                    "expression": {
                                                                        "id": 761,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3015:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 763,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "nonce",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5464,
                                                                    "src": "3015:17:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 764,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3046:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 765,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "gasLimit",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5466,
                                                                    "src": "3046:20:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 766,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3080:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 767,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "to",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5468,
                                                                    "src": "3080:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 768,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3108:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 769,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "value",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5470,
                                                                    "src": "3108:17:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 770,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3139:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 771,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "data",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5472,
                                                                    "src": "3139:16:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 772,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "nodeType": "TupleExpression",
                                                            "src": "3014:142:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "arguments": [
                                                                {
                                                                    "id": 775,
                                                                    "name": "rawTransaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 730,
                                                                    "src": "3192:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 773,
                                                                    "name": "RLPReader",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9409,
                                                                    "src": "3159:9:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_RLPReader_$9409_$",
                                                                        "typeString": "type(library RLPReader)"
                                                                    }
                                                                },
                                                                "id": 774,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "decodeTransactionType2",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 8900,
                                                                "src": "3159:32:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes calldata) pure returns (uint256,uint256,address,uint256,bytes memory)"
                                                                }
                                                            },
                                                            "id": 776,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3159:48:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "src": "3014:193:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 778,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "3014:193:3"
                                                }
                                            ]
                                        }
                                    },
                                    "id": 800,
                                    "nodeType": "IfStatement",
                                    "src": "2696:747:3",
                                    "trueBody": {
                                        "id": 757,
                                        "nodeType": "Block",
                                        "src": "2736:218:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 755,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "components": [
                                                            {
                                                                "expression": {
                                                                    "id": 739,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2751:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 741,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "nonce",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5464,
                                                                "src": "2751:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 742,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2782:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 743,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "gasLimit",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5466,
                                                                "src": "2782:20:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 744,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2816:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 745,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "to",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5468,
                                                                "src": "2816:14:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 746,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2844:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 747,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "value",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5470,
                                                                "src": "2844:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 748,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2875:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 749,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "data",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5472,
                                                                "src": "2875:16:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            }
                                                        ],
                                                        "id": 750,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "TupleExpression",
                                                        "src": "2750:142:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                            "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 753,
                                                                "name": "rawTransaction",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 730,
                                                                "src": "2928:14:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 751,
                                                                "name": "RLPReader",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9409,
                                                                "src": "2895:9:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_RLPReader_$9409_$",
                                                                    "typeString": "type(library RLPReader)"
                                                                }
                                                            },
                                                            "id": 752,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "decodeTransactionType1",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8837,
                                                            "src": "2895:32:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "function (bytes calldata) pure returns (uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "id": 754,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2895:48:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                            "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "src": "2750:193:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 756,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2750:193:3"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 801,
                                        "name": "transaction",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 734,
                                        "src": "3459:11:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                            "typeString": "struct IPenalizer.Transaction memory"
                                        }
                                    },
                                    "functionReturnParameters": 735,
                                    "id": 802,
                                    "nodeType": "Return",
                                    "src": "3452:18:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 728,
                            "nodeType": "StructuredDocumentation",
                            "src": "2463:107:3",
                            "text": "@return transaction The details that the `Penalizer` needs to decide if the transaction is penalizable."
                        },
                        "functionSelector": "25896446",
                        "id": 804,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "decodeTransaction",
                        "nameLocation": "2584:17:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 731,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 730,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "2617:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 804,
                                    "src": "2602:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 729,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2602:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2601:31:3"
                        },
                        "returnParameters": {
                            "id": 735,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 734,
                                    "mutability": "mutable",
                                    "name": "transaction",
                                    "nameLocation": "2673:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 804,
                                    "src": "2654:30:3",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                        "typeString": "struct IPenalizer.Transaction"
                                    },
                                    "typeName": {
                                        "id": 733,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 732,
                                            "name": "Transaction",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5473,
                                            "src": "2654:11:3"
                                        },
                                        "referencedDeclaration": 5473,
                                        "src": "2654:11:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Transaction_$5473_storage_ptr",
                                            "typeString": "struct IPenalizer.Transaction"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2653:32:3"
                        },
                        "scope": 1177,
                        "src": "2575:902:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "47885781",
                        "id": 808,
                        "mutability": "mutable",
                        "name": "commits",
                        "nameLocation": "3518:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1177,
                        "src": "3483:42:3",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                        },
                        "typeName": {
                            "id": 807,
                            "keyType": {
                                "id": 805,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3491:7:3",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "3483:27:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                            },
                            "valueType": {
                                "id": 806,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3502:7:3",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5479
                        ],
                        "body": {
                            "id": 835,
                            "nodeType": "Block",
                            "src": "3617:193:3",
                            "statements": [
                                {
                                    "assignments": [
                                        816
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 816,
                                            "mutability": "mutable",
                                            "name": "readyBlockNumber",
                                            "nameLocation": "3635:16:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 835,
                                            "src": "3627:24:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 815,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3627:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 821,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 820,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 817,
                                                "name": "block",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967292,
                                                "src": "3654:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_block",
                                                    "typeString": "block"
                                                }
                                            },
                                            "id": 818,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "number",
                                            "nodeType": "MemberAccess",
                                            "src": "3654:12:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                            "id": 819,
                                            "name": "penalizeBlockDelay",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 582,
                                            "src": "3669:18:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "3654:33:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3627:60:3"
                                },
                                {
                                    "expression": {
                                        "id": 826,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 822,
                                                "name": "commits",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 808,
                                                "src": "3697:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                    "typeString": "mapping(bytes32 => uint256)"
                                                }
                                            },
                                            "id": 824,
                                            "indexExpression": {
                                                "id": 823,
                                                "name": "commitHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 811,
                                                "src": "3705:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3697:19:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 825,
                                            "name": "readyBlockNumber",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 816,
                                            "src": "3719:16:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "3697:38:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 827,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3697:38:3"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 829,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "3762:3:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 830,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "3762:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 831,
                                                "name": "commitHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 811,
                                                "src": "3774:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 832,
                                                "name": "readyBlockNumber",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 816,
                                                "src": "3786:16:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 828,
                                            "name": "CommitAdded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5462,
                                            "src": "3750:11:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,bytes32,uint256)"
                                            }
                                        },
                                        "id": 833,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3750:53:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 834,
                                    "nodeType": "EmitStatement",
                                    "src": "3745:58:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 809,
                            "nodeType": "StructuredDocumentation",
                            "src": "3532:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "f14fcbc8",
                        "id": 836,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "commit",
                        "nameLocation": "3572:6:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 813,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "3608:8:3"
                        },
                        "parameters": {
                            "id": 812,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 811,
                                    "mutability": "mutable",
                                    "name": "commitHash",
                                    "nameLocation": "3587:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 836,
                                    "src": "3579:18:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 810,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3579:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3578:20:3"
                        },
                        "returnParameters": {
                            "id": 814,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3617:0:3"
                        },
                        "scope": 1177,
                        "src": "3563:247:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 903,
                            "nodeType": "Block",
                            "src": "3949:629:3",
                            "statements": [
                                {
                                    "assignments": [
                                        840
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 840,
                                            "mutability": "mutable",
                                            "name": "commitHash",
                                            "nameLocation": "3967:10:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 903,
                                            "src": "3959:18:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 839,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3959:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 852,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 845,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "4017:3:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 846,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "data",
                                                                "nodeType": "MemberAccess",
                                                                "src": "4017:8:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "id": 844,
                                                            "name": "keccak256",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967288,
                                                            "src": "4007:9:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 847,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4007:19:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 848,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "4028:3:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 849,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4028:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 842,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967295,
                                                        "src": "3990:3:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 843,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "encodePacked",
                                                    "nodeType": "MemberAccess",
                                                    "src": "3990:16:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 850,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3990:49:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "id": 841,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967288,
                                            "src": "3980:9:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 851,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3980:60:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3959:81:3"
                                },
                                {
                                    "assignments": [
                                        854
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 854,
                                            "mutability": "mutable",
                                            "name": "readyBlockNumber",
                                            "nameLocation": "4058:16:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 903,
                                            "src": "4050:24:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 853,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4050:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 858,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 855,
                                            "name": "commits",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 808,
                                            "src": "4077:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                "typeString": "mapping(bytes32 => uint256)"
                                            }
                                        },
                                        "id": 857,
                                        "indexExpression": {
                                            "id": 856,
                                            "name": "commitHash",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 840,
                                            "src": "4085:10:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4077:19:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4050:46:3"
                                },
                                {
                                    "expression": {
                                        "id": 862,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "delete",
                                        "prefix": true,
                                        "src": "4106:26:3",
                                        "subExpression": {
                                            "baseExpression": {
                                                "id": 859,
                                                "name": "commits",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 808,
                                                "src": "4113:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                    "typeString": "mapping(bytes32 => uint256)"
                                                }
                                            },
                                            "id": 861,
                                            "indexExpression": {
                                                "id": 860,
                                                "name": "commitHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 840,
                                                "src": "4121:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "4113:19:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 863,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4106:26:3"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 874,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 864,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967281,
                                                "src": "4261:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                }
                                            },
                                            "id": 865,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "4261:10:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 870,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "4288:7:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint160_$",
                                                                    "typeString": "type(uint160)"
                                                                },
                                                                "typeName": {
                                                                    "id": 869,
                                                                    "name": "uint160",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "4288:7:3",
                                                                    "typeDescriptions": {}
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_type$_t_uint160_$",
                                                                    "typeString": "type(uint160)"
                                                                }
                                                            ],
                                                            "id": 868,
                                                            "name": "type",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967269,
                                                            "src": "4283:4:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                                "typeString": "function () pure"
                                                            }
                                                        },
                                                        "id": 871,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4283:13:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_meta_type_t_uint160",
                                                            "typeString": "type(uint160)"
                                                        }
                                                    },
                                                    "id": 872,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "max",
                                                    "nodeType": "MemberAccess",
                                                    "src": "4283:17:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint160",
                                                        "typeString": "uint160"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint160",
                                                        "typeString": "uint160"
                                                    }
                                                ],
                                                "id": 867,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "4275:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 866,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4275:7:3",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 873,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4275:26:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "4261:40:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 901,
                                    "nodeType": "IfStatement",
                                    "src": "4258:303:3",
                                    "trueBody": {
                                        "id": 900,
                                        "nodeType": "Block",
                                        "src": "4303:258:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 878,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 876,
                                                                "name": "readyBlockNumber",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 854,
                                                                "src": "4325:16:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 877,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4345:1:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "4325:21:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6e6f20636f6d6d6974",
                                                            "id": 879,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4348:11:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2af0ca6efea1fb7a41c8fa819280b67251f77665354409b29c9708284550628c",
                                                                "typeString": "literal_string \"no commit\""
                                                            },
                                                            "value": "no commit"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2af0ca6efea1fb7a41c8fa819280b67251f77665354409b29c9708284550628c",
                                                                "typeString": "literal_string \"no commit\""
                                                            }
                                                        ],
                                                        "id": 875,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "4317:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 880,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4317:43:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 881,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4317:43:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 886,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 883,
                                                                "name": "readyBlockNumber",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 854,
                                                                "src": "4382:16:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 884,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967292,
                                                                    "src": "4401:5:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 885,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "number",
                                                                "nodeType": "MemberAccess",
                                                                "src": "4401:12:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4382:31:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "72657665616c2070656e616c697a6520746f6f20736f6f6e",
                                                            "id": 887,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4415:26:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2cc5d4292d75de8bb25701550887b414bd0cdcd4ed30afd012888da9172f7005",
                                                                "typeString": "literal_string \"reveal penalize too soon\""
                                                            },
                                                            "value": "reveal penalize too soon"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2cc5d4292d75de8bb25701550887b414bd0cdcd4ed30afd012888da9172f7005",
                                                                "typeString": "literal_string \"reveal penalize too soon\""
                                                            }
                                                        ],
                                                        "id": 882,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "4374:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 888,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4374:68:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 889,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4374:68:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 896,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 893,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 891,
                                                                    "name": "readyBlockNumber",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 854,
                                                                    "src": "4464:16:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "id": 892,
                                                                    "name": "penalizeBlockExpiration",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 584,
                                                                    "src": "4483:23:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "4464:42:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 894,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967292,
                                                                    "src": "4509:5:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 895,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "number",
                                                                "nodeType": "MemberAccess",
                                                                "src": "4509:12:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4464:57:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "72657665616c2070656e616c697a6520746f6f206c617465",
                                                            "id": 897,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4523:26:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ccb3426f4f5b94e37bc35249e02c91ac8fbab1a56e18e158320d2d96545171d4",
                                                                "typeString": "literal_string \"reveal penalize too late\""
                                                            },
                                                            "value": "reveal penalize too late"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ccb3426f4f5b94e37bc35249e02c91ac8fbab1a56e18e158320d2d96545171d4",
                                                                "typeString": "literal_string \"reveal penalize too late\""
                                                            }
                                                        ],
                                                        "id": 890,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "4456:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 898,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4456:94:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 899,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4456:94:3"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "id": 902,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "4570:1:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 837,
                            "nodeType": "StructuredDocumentation",
                            "src": "3816:100:3",
                            "text": "Modifier that verifies there was a `commit` operation before this call that has not expired yet."
                        },
                        "id": 904,
                        "name": "commitRevealOnly",
                        "nameLocation": "3930:16:3",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 838,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3946:2:3"
                        },
                        "src": "3921:657:3",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "baseFunctions": [
                            5496
                        ],
                        "body": {
                            "id": 935,
                            "nodeType": "Block",
                            "src": "4891:117:3",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 924,
                                                "name": "randomValue",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 918,
                                                "src": "4902:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 925,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "4901:13:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 926,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4901:13:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 928,
                                                "name": "unsignedTx1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 907,
                                                "src": "4947:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 929,
                                                "name": "signature1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 909,
                                                "src": "4960:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 930,
                                                "name": "unsignedTx2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 911,
                                                "src": "4972:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 931,
                                                "name": "signature2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 913,
                                                "src": "4985:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 932,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 916,
                                                "src": "4997:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            ],
                                            "id": 927,
                                            "name": "_penalizeRepeatedNonce",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1053,
                                            "src": "4924:22:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_contract$_IRelayHub_$5896_$returns$__$",
                                                "typeString": "function (bytes calldata,bytes calldata,bytes calldata,bytes calldata,contract IRelayHub)"
                                            }
                                        },
                                        "id": 933,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4924:77:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 934,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4924:77:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 905,
                            "nodeType": "StructuredDocumentation",
                            "src": "4584:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "ab456ccb",
                        "id": 936,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 922,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 921,
                                    "name": "commitRevealOnly",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 904,
                                    "src": "4874:16:3"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4874:16:3"
                            }
                        ],
                        "name": "penalizeRepeatedNonce",
                        "nameLocation": "4624:21:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 920,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "4861:8:3"
                        },
                        "parameters": {
                            "id": 919,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 907,
                                    "mutability": "mutable",
                                    "name": "unsignedTx1",
                                    "nameLocation": "4670:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4655:26:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 906,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4655:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 909,
                                    "mutability": "mutable",
                                    "name": "signature1",
                                    "nameLocation": "4706:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4691:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 908,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4691:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 911,
                                    "mutability": "mutable",
                                    "name": "unsignedTx2",
                                    "nameLocation": "4741:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4726:26:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 910,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4726:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 913,
                                    "mutability": "mutable",
                                    "name": "signature2",
                                    "nameLocation": "4777:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4762:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 912,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4762:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 916,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "4807:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4797:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 915,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 914,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "4797:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "4797:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 918,
                                    "mutability": "mutable",
                                    "name": "randomValue",
                                    "nameLocation": "4828:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4820:19:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 917,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4820:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4645:200:3"
                        },
                        "returnParameters": {
                            "id": 923,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4891:0:3"
                        },
                        "scope": 1177,
                        "src": "4615:393:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1052,
                            "nodeType": "Block",
                            "src": "5233:1100:3",
                            "statements": [
                                {
                                    "assignments": [
                                        951
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 951,
                                            "mutability": "mutable",
                                            "name": "addr1",
                                            "nameLocation": "5251:5:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5243:13:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 950,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5243:7:3",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 958,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 956,
                                                "name": "signature1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 940,
                                                "src": "5290:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 953,
                                                        "name": "unsignedTx1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 938,
                                                        "src": "5269:11:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 952,
                                                    "name": "keccak256",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967288,
                                                    "src": "5259:9:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                    }
                                                },
                                                "id": 954,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5259:22:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "id": 955,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "recover",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11871,
                                            "src": "5259:30:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                                                "typeString": "function (bytes32,bytes memory) pure returns (address)"
                                            }
                                        },
                                        "id": 957,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5259:42:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5243:58:3"
                                },
                                {
                                    "assignments": [
                                        960
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 960,
                                            "mutability": "mutable",
                                            "name": "addr2",
                                            "nameLocation": "5319:5:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5311:13:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 959,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5311:7:3",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 967,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 965,
                                                "name": "signature2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 944,
                                                "src": "5358:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 962,
                                                        "name": "unsignedTx2",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 942,
                                                        "src": "5337:11:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 961,
                                                    "name": "keccak256",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967288,
                                                    "src": "5327:9:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                    }
                                                },
                                                "id": 963,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5327:22:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "id": 964,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "recover",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11871,
                                            "src": "5327:30:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                                                "typeString": "function (bytes32,bytes memory) pure returns (address)"
                                            }
                                        },
                                        "id": 966,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5327:42:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5311:58:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 971,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 969,
                                                    "name": "addr1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 951,
                                                    "src": "5388:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "id": 970,
                                                    "name": "addr2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 960,
                                                    "src": "5397:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "5388:14:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "446966666572656e74207369676e6572",
                                                "id": 972,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5404:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_77f12a9a496b062a6cd97e7e01fa86a04f9bf1daea28d37b7b1a6dcb31f1445a",
                                                    "typeString": "literal_string \"Different signer\""
                                                },
                                                "value": "Different signer"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_77f12a9a496b062a6cd97e7e01fa86a04f9bf1daea28d37b7b1a6dcb31f1445a",
                                                    "typeString": "literal_string \"Different signer\""
                                                }
                                            ],
                                            "id": 968,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "5380:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 973,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5380:43:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 974,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5380:43:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 981,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 976,
                                                    "name": "addr1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 951,
                                                    "src": "5441:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 979,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5458:1:3",
                                                            "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": 978,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "5450:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 977,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5450:7:3",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 980,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5450:10:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "5441:19:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "65637265636f766572206661696c6564",
                                                "id": 982,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5462:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_e58270ee9df7f123e74980140856b47d916f4de0f2167d7d0ac95254b56c5356",
                                                    "typeString": "literal_string \"ecrecover failed\""
                                                },
                                                "value": "ecrecover failed"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_e58270ee9df7f123e74980140856b47d916f4de0f2167d7d0ac95254b56c5356",
                                                    "typeString": "literal_string \"ecrecover failed\""
                                                }
                                            ],
                                            "id": 975,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "5433:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 983,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5433:48:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 984,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5433:48:3"
                                },
                                {
                                    "assignments": [
                                        987
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 987,
                                            "mutability": "mutable",
                                            "name": "decodedTx1",
                                            "nameLocation": "5511:10:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5492:29:3",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                "typeString": "struct IPenalizer.Transaction"
                                            },
                                            "typeName": {
                                                "id": 986,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 985,
                                                    "name": "Transaction",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5473,
                                                    "src": "5492:11:3"
                                                },
                                                "referencedDeclaration": 5473,
                                                "src": "5492:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Transaction_$5473_storage_ptr",
                                                    "typeString": "struct IPenalizer.Transaction"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 991,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 989,
                                                "name": "unsignedTx1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 938,
                                                "src": "5542:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 988,
                                            "name": "decodeTransaction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 804,
                                            "src": "5524:17:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_struct$_Transaction_$5473_memory_ptr_$",
                                                "typeString": "function (bytes calldata) pure returns (struct IPenalizer.Transaction memory)"
                                            }
                                        },
                                        "id": 990,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5524:30:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                            "typeString": "struct IPenalizer.Transaction memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5492:62:3"
                                },
                                {
                                    "assignments": [
                                        994
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 994,
                                            "mutability": "mutable",
                                            "name": "decodedTx2",
                                            "nameLocation": "5583:10:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5564:29:3",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                "typeString": "struct IPenalizer.Transaction"
                                            },
                                            "typeName": {
                                                "id": 993,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 992,
                                                    "name": "Transaction",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5473,
                                                    "src": "5564:11:3"
                                                },
                                                "referencedDeclaration": 5473,
                                                "src": "5564:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Transaction_$5473_storage_ptr",
                                                    "typeString": "struct IPenalizer.Transaction"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 998,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 996,
                                                "name": "unsignedTx2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 942,
                                                "src": "5614:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 995,
                                            "name": "decodeTransaction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 804,
                                            "src": "5596:17:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_struct$_Transaction_$5473_memory_ptr_$",
                                                "typeString": "function (bytes calldata) pure returns (struct IPenalizer.Transaction memory)"
                                            }
                                        },
                                        "id": 997,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5596:30:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                            "typeString": "struct IPenalizer.Transaction memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5564:62:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 1004,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 1000,
                                                        "name": "decodedTx1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 987,
                                                        "src": "5886:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                        }
                                                    },
                                                    "id": 1001,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "nonce",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 5464,
                                                    "src": "5886:16:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "expression": {
                                                        "id": 1002,
                                                        "name": "decodedTx2",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 994,
                                                        "src": "5906:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                        }
                                                    },
                                                    "id": 1003,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "nonce",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 5464,
                                                    "src": "5906:16:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "5886:36:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "446966666572656e74206e6f6e6365",
                                                "id": 1005,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5924:17:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_6136512038ef862fc08c559b09cc7aa2cae962bda7bdd342d620a678fd11a712",
                                                    "typeString": "literal_string \"Different nonce\""
                                                },
                                                "value": "Different nonce"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_6136512038ef862fc08c559b09cc7aa2cae962bda7bdd342d620a678fd11a712",
                                                    "typeString": "literal_string \"Different nonce\""
                                                }
                                            ],
                                            "id": 999,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "5878:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 1006,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5878:64:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1007,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5878:64:3"
                                },
                                {
                                    "assignments": [
                                        1009
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1009,
                                            "mutability": "mutable",
                                            "name": "dataToCheck1",
                                            "nameLocation": "5966:12:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5953:25:3",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 1008,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5953:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1021,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 1012,
                                                    "name": "decodedTx1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 987,
                                                    "src": "6006:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1013,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "data",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5472,
                                                "src": "6006:15:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1014,
                                                    "name": "decodedTx1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 987,
                                                    "src": "6023:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1015,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "gasLimit",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5466,
                                                "src": "6023:19:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1016,
                                                    "name": "decodedTx1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 987,
                                                    "src": "6044:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1017,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "to",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5468,
                                                "src": "6044:13:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1018,
                                                    "name": "decodedTx1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 987,
                                                    "src": "6059:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1019,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "value",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5470,
                                                "src": "6059:16:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1010,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967295,
                                                "src": "5989:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                }
                                            },
                                            "id": 1011,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "src": "5989:16:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                            }
                                        },
                                        "id": 1020,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5989:87:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5953:123:3"
                                },
                                {
                                    "assignments": [
                                        1023
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1023,
                                            "mutability": "mutable",
                                            "name": "dataToCheck2",
                                            "nameLocation": "6100:12:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "6087:25:3",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 1022,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6087:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1035,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 1026,
                                                    "name": "decodedTx2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 994,
                                                    "src": "6140:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1027,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "data",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5472,
                                                "src": "6140:15:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1028,
                                                    "name": "decodedTx2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 994,
                                                    "src": "6157:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1029,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "gasLimit",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5466,
                                                "src": "6157:19:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1030,
                                                    "name": "decodedTx2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 994,
                                                    "src": "6178:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1031,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "to",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5468,
                                                "src": "6178:13:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1032,
                                                    "name": "decodedTx2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 994,
                                                    "src": "6193:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1033,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "value",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5470,
                                                "src": "6193:16:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1024,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967295,
                                                "src": "6123:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                }
                                            },
                                            "id": 1025,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "src": "6123:16:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                            }
                                        },
                                        "id": 1034,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6123:87:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6087:123:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "id": 1043,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1038,
                                                            "name": "dataToCheck1",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1009,
                                                            "src": "6239:12:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1037,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967288,
                                                        "src": "6229:9:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 1039,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6229:23:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1041,
                                                            "name": "dataToCheck2",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1023,
                                                            "src": "6266:12:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1040,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967288,
                                                        "src": "6256:9:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 1042,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6256:23:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "src": "6229:50:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "747820697320657175616c",
                                                "id": 1044,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6281:13:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_822839638978993ab14d31c59e1ff905c0afbb4298c5da6313df4ee328f5a727",
                                                    "typeString": "literal_string \"tx is equal\""
                                                },
                                                "value": "tx is equal"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_822839638978993ab14d31c59e1ff905c0afbb4298c5da6313df4ee328f5a727",
                                                    "typeString": "literal_string \"tx is equal\""
                                                }
                                            ],
                                            "id": 1036,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "6221:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 1045,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6221:74:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1046,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6221:74:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1048,
                                                "name": "addr1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 951,
                                                "src": "6315:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 1049,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 947,
                                                "src": "6322:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            ],
                                            "id": 1047,
                                            "name": "penalize",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1176,
                                            "src": "6306:8:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_contract$_IRelayHub_$5896_$returns$__$",
                                                "typeString": "function (address,contract IRelayHub)"
                                            }
                                        },
                                        "id": 1050,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6306:20:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1051,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6306:20:3"
                                }
                            ]
                        },
                        "id": 1053,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_penalizeRepeatedNonce",
                        "nameLocation": "5023:22:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 948,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 938,
                                    "mutability": "mutable",
                                    "name": "unsignedTx1",
                                    "nameLocation": "5070:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5055:26:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 937,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5055:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 940,
                                    "mutability": "mutable",
                                    "name": "signature1",
                                    "nameLocation": "5106:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5091:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 939,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5091:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 942,
                                    "mutability": "mutable",
                                    "name": "unsignedTx2",
                                    "nameLocation": "5141:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5126:26:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 941,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5126:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 944,
                                    "mutability": "mutable",
                                    "name": "signature2",
                                    "nameLocation": "5177:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5162:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 943,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5162:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 947,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "5207:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5197:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 946,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 945,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "5197:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "5197:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5045:171:3"
                        },
                        "returnParameters": {
                            "id": 949,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5233:0:3"
                        },
                        "scope": 1177,
                        "src": "5014:1319:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            5509
                        ],
                        "body": {
                            "id": 1078,
                            "nodeType": "Block",
                            "src": "6578:95:3",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 1069,
                                                "name": "randomValue",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1063,
                                                "src": "6589:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 1070,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "6588:13:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1071,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6588:13:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1073,
                                                "name": "unsignedTx",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1056,
                                                "src": "6639:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 1074,
                                                "name": "signature",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1058,
                                                "src": "6651:9:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 1075,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1061,
                                                "src": "6662:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            ],
                                            "id": 1072,
                                            "name": "_penalizeIllegalTransaction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1156,
                                            "src": "6611:27:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_contract$_IRelayHub_$5896_$returns$__$",
                                                "typeString": "function (bytes calldata,bytes calldata,contract IRelayHub)"
                                            }
                                        },
                                        "id": 1076,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6611:55:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1077,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6611:55:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1054,
                            "nodeType": "StructuredDocumentation",
                            "src": "6339:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "a640bc74",
                        "id": 1079,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1067,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1066,
                                    "name": "commitRevealOnly",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 904,
                                    "src": "6561:16:3"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6561:16:3"
                            }
                        ],
                        "name": "penalizeIllegalTransaction",
                        "nameLocation": "6379:26:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 1065,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "6548:8:3"
                        },
                        "parameters": {
                            "id": 1064,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1056,
                                    "mutability": "mutable",
                                    "name": "unsignedTx",
                                    "nameLocation": "6430:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1079,
                                    "src": "6415:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 1055,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6415:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1058,
                                    "mutability": "mutable",
                                    "name": "signature",
                                    "nameLocation": "6465:9:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1079,
                                    "src": "6450:24:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 1057,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6450:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1061,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "6494:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1079,
                                    "src": "6484:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 1060,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1059,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "6484:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "6484:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1063,
                                    "mutability": "mutable",
                                    "name": "randomValue",
                                    "nameLocation": "6515:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1079,
                                    "src": "6507:19:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1062,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6507:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6405:127:3"
                        },
                        "returnParameters": {
                            "id": 1068,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6578:0:3"
                        },
                        "scope": 1177,
                        "src": "6370:303:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1155,
                            "nodeType": "Block",
                            "src": "6830:625:3",
                            "statements": [
                                {
                                    "condition": {
                                        "arguments": [
                                            {
                                                "id": 1090,
                                                "name": "unsignedTx",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1081,
                                                "src": "6867:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 1089,
                                            "name": "isTransactionTypeValid",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 727,
                                            "src": "6844:22:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                "typeString": "function (bytes calldata) pure returns (bool)"
                                            }
                                        },
                                        "id": 1091,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6844:34:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1130,
                                    "nodeType": "IfStatement",
                                    "src": "6840:455:3",
                                    "trueBody": {
                                        "id": 1129,
                                        "nodeType": "Block",
                                        "src": "6880:415:3",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1094
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1094,
                                                        "mutability": "mutable",
                                                        "name": "decodedTx",
                                                        "nameLocation": "6913:9:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1129,
                                                        "src": "6894:28:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                            "typeString": "struct IPenalizer.Transaction"
                                                        },
                                                        "typeName": {
                                                            "id": 1093,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 1092,
                                                                "name": "Transaction",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 5473,
                                                                "src": "6894:11:3"
                                                            },
                                                            "referencedDeclaration": 5473,
                                                            "src": "6894:11:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Transaction_$5473_storage_ptr",
                                                                "typeString": "struct IPenalizer.Transaction"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1098,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1096,
                                                            "name": "unsignedTx",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1081,
                                                            "src": "6943:10:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                                "typeString": "bytes calldata"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                                "typeString": "bytes calldata"
                                                            }
                                                        ],
                                                        "id": 1095,
                                                        "name": "decodeTransaction",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 804,
                                                        "src": "6925:17:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_struct$_Transaction_$5473_memory_ptr_$",
                                                            "typeString": "function (bytes calldata) pure returns (struct IPenalizer.Transaction memory)"
                                                        }
                                                    },
                                                    "id": 1097,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6925:29:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6894:60:3"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 1105,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 1099,
                                                            "name": "decodedTx",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1094,
                                                            "src": "6972:9:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                "typeString": "struct IPenalizer.Transaction memory"
                                                            }
                                                        },
                                                        "id": 1100,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "to",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5468,
                                                        "src": "6972:12:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 1103,
                                                                "name": "hub",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1086,
                                                                "src": "6996:3:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                                    "typeString": "contract IRelayHub"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                                    "typeString": "contract IRelayHub"
                                                                }
                                                            ],
                                                            "id": 1102,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "6988:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 1101,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "6988:7:3",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 1104,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6988:12:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "6972:28:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1128,
                                                "nodeType": "IfStatement",
                                                "src": "6968:317:3",
                                                "trueBody": {
                                                    "id": 1127,
                                                    "nodeType": "Block",
                                                    "src": "7002:283:3",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                1107
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 1107,
                                                                    "mutability": "mutable",
                                                                    "name": "selector",
                                                                    "nameLocation": "7027:8:3",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 1127,
                                                                    "src": "7020:15:3",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1106,
                                                                        "name": "bytes4",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7020:6:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 1113,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 1110,
                                                                            "name": "decodedTx",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1094,
                                                                            "src": "7060:9:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                                "typeString": "struct IPenalizer.Transaction memory"
                                                                            }
                                                                        },
                                                                        "id": 1111,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "data",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5472,
                                                                        "src": "7060:14:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 1108,
                                                                        "name": "GsnUtils",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8572,
                                                                        "src": "7038:8:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_GsnUtils_$8572_$",
                                                                            "typeString": "type(library GsnUtils)"
                                                                        }
                                                                    },
                                                                    "id": 1109,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "getMethodSig",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 8542,
                                                                    "src": "7038:21:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                                        "typeString": "function (bytes memory) pure returns (bytes4)"
                                                                    }
                                                                },
                                                                "id": 1112,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7038:37:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes4",
                                                                    "typeString": "bytes4"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "7020:55:3"
                                                        },
                                                        {
                                                            "assignments": [
                                                                1115
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 1115,
                                                                    "mutability": "mutable",
                                                                    "name": "isWrongMethodCall",
                                                                    "nameLocation": "7098:17:3",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 1127,
                                                                    "src": "7093:22:3",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1114,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7093:4:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 1121,
                                                            "initialValue": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bytes4",
                                                                    "typeString": "bytes4"
                                                                },
                                                                "id": 1120,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1116,
                                                                    "name": "selector",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1107,
                                                                    "src": "7118:8:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 1117,
                                                                            "name": "IRelayHub",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5896,
                                                                            "src": "7130:9:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IRelayHub_$5896_$",
                                                                                "typeString": "type(contract IRelayHub)"
                                                                            }
                                                                        },
                                                                        "id": 1118,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "relayCall",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5729,
                                                                        "src": "7130:19:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_declaration_nonpayable$_t_string_calldata_ptr_$_t_uint256_$_t_struct$_RelayRequest_$8491_calldata_ptr_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_uint256_$_t_enum$_RelayCallStatus_$5668_$_t_bytes_memory_ptr_$",
                                                                            "typeString": "function IRelayHub.relayCall(string calldata,uint256,struct GsnTypes.RelayRequest calldata,bytes calldata,bytes calldata) returns (bool,uint256,enum IRelayHub.RelayCallStatus,bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 1119,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7130:28:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                "src": "7118:40:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "7093:65:3"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1123,
                                                                        "name": "isWrongMethodCall",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1115,
                                                                        "src": "7205:17:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "4c6567616c2072656c6179207472616e73616374696f6e",
                                                                        "id": 1124,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7244:25:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_22b6e321d1f4cb50754e524e834e05384aed148cd455d6fb6045faefaf95dc1a",
                                                                            "typeString": "literal_string \"Legal relay transaction\""
                                                                        },
                                                                        "value": "Legal relay transaction"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_22b6e321d1f4cb50754e524e834e05384aed148cd455d6fb6045faefaf95dc1a",
                                                                            "typeString": "literal_string \"Legal relay transaction\""
                                                                        }
                                                                    ],
                                                                    "id": 1122,
                                                                    "name": "require",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        4294967278,
                                                                        4294967278
                                                                    ],
                                                                    "referencedDeclaration": 4294967278,
                                                                    "src": "7176:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (bool,string memory) pure"
                                                                    }
                                                                },
                                                                "id": 1125,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7176:94:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1126,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7176:94:3"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [
                                        1132
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1132,
                                            "mutability": "mutable",
                                            "name": "relay",
                                            "nameLocation": "7312:5:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1155,
                                            "src": "7304:13:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 1131,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7304:7:3",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1139,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 1137,
                                                "name": "signature",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1083,
                                                "src": "7350:9:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 1134,
                                                        "name": "unsignedTx",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1081,
                                                        "src": "7330:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 1133,
                                                    "name": "keccak256",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967288,
                                                    "src": "7320:9:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                    }
                                                },
                                                "id": 1135,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7320:21:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "id": 1136,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "recover",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11871,
                                            "src": "7320:29:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                                                "typeString": "function (bytes32,bytes memory) pure returns (address)"
                                            }
                                        },
                                        "id": 1138,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7320:40:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7304:56:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 1146,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 1141,
                                                    "name": "relay",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1132,
                                                    "src": "7378:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 1144,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7395:1:3",
                                                            "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": 1143,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "7387:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 1142,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7387:7:3",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 1145,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7387:10:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "7378:19:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "65637265636f766572206661696c6564",
                                                "id": 1147,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7399:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_e58270ee9df7f123e74980140856b47d916f4de0f2167d7d0ac95254b56c5356",
                                                    "typeString": "literal_string \"ecrecover failed\""
                                                },
                                                "value": "ecrecover failed"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_e58270ee9df7f123e74980140856b47d916f4de0f2167d7d0ac95254b56c5356",
                                                    "typeString": "literal_string \"ecrecover failed\""
                                                }
                                            ],
                                            "id": 1140,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7370:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 1148,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7370:48:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1149,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7370:48:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1151,
                                                "name": "relay",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1132,
                                                "src": "7437:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 1152,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1086,
                                                "src": "7444:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            ],
                                            "id": 1150,
                                            "name": "penalize",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1176,
                                            "src": "7428:8:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_contract$_IRelayHub_$5896_$returns$__$",
                                                "typeString": "function (address,contract IRelayHub)"
                                            }
                                        },
                                        "id": 1153,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7428:20:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1154,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7428:20:3"
                                }
                            ]
                        },
                        "id": 1156,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_penalizeIllegalTransaction",
                        "nameLocation": "6688:27:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1087,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1081,
                                    "mutability": "mutable",
                                    "name": "unsignedTx",
                                    "nameLocation": "6740:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1156,
                                    "src": "6725:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 1080,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6725:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1083,
                                    "mutability": "mutable",
                                    "name": "signature",
                                    "nameLocation": "6775:9:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1156,
                                    "src": "6760:24:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 1082,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6760:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1086,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "6804:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1156,
                                    "src": "6794:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 1085,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1084,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "6794:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "6794:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6715:98:3"
                        },
                        "returnParameters": {
                            "id": 1088,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6830:0:3"
                        },
                        "scope": 1177,
                        "src": "6679:776:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 1175,
                            "nodeType": "Block",
                            "src": "7523:63:3",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1167,
                                                "name": "relayWorker",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1158,
                                                "src": "7546:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "expression": {
                                                            "id": 1170,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "7567:3:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 1171,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "7567:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 1169,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "7559:8:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                                        "typeString": "type(address payable)"
                                                    },
                                                    "typeName": {
                                                        "id": 1168,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "7559:8:3",
                                                        "stateMutability": "payable",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 1172,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7559:19:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1164,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1161,
                                                "src": "7533:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            },
                                            "id": 1166,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "penalize",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5737,
                                            "src": "7533:12:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_payable_$returns$__$",
                                                "typeString": "function (address,address payable) external"
                                            }
                                        },
                                        "id": 1173,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7533:46:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1174,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7533:46:3"
                                }
                            ]
                        },
                        "id": 1176,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "penalize",
                        "nameLocation": "7470:8:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1162,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1158,
                                    "mutability": "mutable",
                                    "name": "relayWorker",
                                    "nameLocation": "7487:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1176,
                                    "src": "7479:19:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1157,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7479:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1161,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "7510:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1176,
                                    "src": "7500:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 1160,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1159,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "7500:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "7500:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7478:36:3"
                        },
                        "returnParameters": {
                            "id": 1163,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7523:0:3"
                        },
                        "scope": 1177,
                        "src": "7461:125:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    }
                ],
                "scope": 1178,
                "src": "504:7084:3",
                "usedErrors": []
            }
        ],
        "src": "0:7588:3"
    },
    "legacyAST": {
        "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/Penalizer.sol",
        "exportedSymbols": {
            "ECDSA": [
                12122
            ],
            "ERC165": [
                12146
            ],
            "GsnTypes": [
                8492
            ],
            "GsnUtils": [
                8572
            ],
            "IERC165": [
                12352
            ],
            "IERC20": [
                10849
            ],
            "IForwarder": [
                5129
            ],
            "IPenalizer": [
                5528
            ],
            "IRelayHub": [
                5896
            ],
            "IStakeManager": [
                6284
            ],
            "MinLibBytes": [
                8687
            ],
            "Penalizer": [
                1177
            ],
            "RLPReader": [
                9409
            ],
            "Strings": [
                11734
            ]
        },
        "id": 1178,
        "license": "GPL-3.0-only",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 560,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:3"
            },
            {
                "id": 561,
                "literals": [
                    "abicoder",
                    "v2"
                ],
                "nodeType": "PragmaDirective",
                "src": "24:19:3"
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
                "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
                "id": 562,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 12123,
                "src": "87:62:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                "file": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                "id": 563,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 12147,
                "src": "150:64:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/RLPReader.sol",
                "file": "./utils/RLPReader.sol",
                "id": 564,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 9410,
                "src": "216:31:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/utils/GsnUtils.sol",
                "file": "./utils/GsnUtils.sol",
                "id": 565,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 8573,
                "src": "248:30:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IRelayHub.sol",
                "file": "./interfaces/IRelayHub.sol",
                "id": 566,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 5897,
                "src": "279:36:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/alexf/gsn2/packages/contracts/solpp/interfaces/IPenalizer.sol",
                "file": "./interfaces/IPenalizer.sol",
                "id": 567,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 1178,
                "sourceUnit": 5529,
                "src": "316:37:3",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 569,
                            "name": "IPenalizer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5528,
                            "src": "526:10:3"
                        },
                        "id": 570,
                        "nodeType": "InheritanceSpecifier",
                        "src": "526:10:3"
                    },
                    {
                        "baseName": {
                            "id": 571,
                            "name": "ERC165",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12146,
                            "src": "538:6:3"
                        },
                        "id": 572,
                        "nodeType": "InheritanceSpecifier",
                        "src": "538:6:3"
                    }
                ],
                "contractDependencies": [],
                "contractKind": "contract",
                "documentation": {
                    "id": 568,
                    "nodeType": "StructuredDocumentation",
                    "src": "355:148:3",
                    "text": " @title The Penalizer Implementation\n @notice This Penalizer supports parsing Legacy, Type 1 and Type 2 raw RLP Encoded transactions."
                },
                "fullyImplemented": true,
                "id": 1177,
                "linearizedBaseContracts": [
                    1177,
                    12146,
                    5528,
                    12352
                ],
                "name": "Penalizer",
                "nameLocation": "513:9:3",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 575,
                        "libraryName": {
                            "id": 573,
                            "name": "ECDSA",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12122,
                            "src": "557:5:3"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "551:24:3",
                        "typeName": {
                            "id": 574,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "567:7:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                            }
                        }
                    },
                    {
                        "baseFunctions": [
                            5515
                        ],
                        "constant": false,
                        "documentation": {
                            "id": 576,
                            "nodeType": "StructuredDocumentation",
                            "src": "581:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "a0313657",
                        "id": 580,
                        "mutability": "mutable",
                        "name": "versionPenalizer",
                        "nameLocation": "635:16:3",
                        "nodeType": "VariableDeclaration",
                        "overrides": {
                            "id": 578,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "626:8:3"
                        },
                        "scope": 1177,
                        "src": "612:85:3",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 577,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "612:6:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": {
                            "hexValue": "332e302e302d626574612e332b6f70656e67736e2e70656e616c697a65722e6970656e616c697a6572",
                            "id": 579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "654:43:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9b10702e39ed62542b11af35eee84af9b8e9bc03eafc19bf310fcc73bf76591c",
                                "typeString": "literal_string \"3.0.0-beta.3+opengsn.penalizer.ipenalizer\""
                            },
                            "value": "3.0.0-beta.3+opengsn.penalizer.ipenalizer"
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 582,
                        "mutability": "immutable",
                        "name": "penalizeBlockDelay",
                        "nameLocation": "731:18:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1177,
                        "src": "704:45:3",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 581,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "704:7:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 584,
                        "mutability": "immutable",
                        "name": "penalizeBlockExpiration",
                        "nameLocation": "782:23:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1177,
                        "src": "755:50:3",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 583,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "755:7:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 599,
                            "nodeType": "Block",
                            "src": "909:117:3",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 593,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 591,
                                            "name": "penalizeBlockDelay",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 582,
                                            "src": "919:18:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 592,
                                            "name": "_penalizeBlockDelay",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 586,
                                            "src": "940:19:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "919:40:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 594,
                                    "nodeType": "ExpressionStatement",
                                    "src": "919:40:3"
                                },
                                {
                                    "expression": {
                                        "id": 597,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 595,
                                            "name": "penalizeBlockExpiration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 584,
                                            "src": "969:23:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 596,
                                            "name": "_penalizeBlockExpiration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 588,
                                            "src": "995:24:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "969:50:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 598,
                                    "nodeType": "ExpressionStatement",
                                    "src": "969:50:3"
                                }
                            ]
                        },
                        "id": 600,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 589,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 586,
                                    "mutability": "mutable",
                                    "name": "_penalizeBlockDelay",
                                    "nameLocation": "841:19:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 600,
                                    "src": "833:27:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 585,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "833:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 588,
                                    "mutability": "mutable",
                                    "name": "_penalizeBlockExpiration",
                                    "nameLocation": "878:24:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 600,
                                    "src": "870:32:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 587,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "870:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "823:85:3"
                        },
                        "returnParameters": {
                            "id": 590,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "909:0:3"
                        },
                        "scope": 1177,
                        "src": "812:214:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            12145,
                            12351
                        ],
                        "body": {
                            "id": 623,
                            "nodeType": "Block",
                            "src": "1168:115:3",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 621,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            },
                                            "id": 616,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 611,
                                                "name": "interfaceId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 603,
                                                "src": "1185:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 613,
                                                            "name": "IPenalizer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5528,
                                                            "src": "1205:10:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IPenalizer_$5528_$",
                                                                "typeString": "type(contract IPenalizer)"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_type$_t_contract$_IPenalizer_$5528_$",
                                                                "typeString": "type(contract IPenalizer)"
                                                            }
                                                        ],
                                                        "id": 612,
                                                        "name": "type",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967269,
                                                        "src": "1200:4:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                            "typeString": "function () pure"
                                                        }
                                                    },
                                                    "id": 614,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1200:16:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_meta_type_t_contract$_IPenalizer_$5528",
                                                        "typeString": "type(contract IPenalizer)"
                                                    }
                                                },
                                                "id": 615,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "interfaceId",
                                                "nodeType": "MemberAccess",
                                                "src": "1200:28:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                }
                                            },
                                            "src": "1185:43:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "id": 619,
                                                    "name": "interfaceId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 603,
                                                    "src": "1264:11:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 617,
                                                    "name": "super",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967271,
                                                    "src": "1240:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_super$_Penalizer_$1177_$",
                                                        "typeString": "type(contract super Penalizer)"
                                                    }
                                                },
                                                "id": 618,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "supportsInterface",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12145,
                                                "src": "1240:23:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                                    "typeString": "function (bytes4) view returns (bool)"
                                                }
                                            },
                                            "id": 620,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1240:36:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "1185:91:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 610,
                                    "id": 622,
                                    "nodeType": "Return",
                                    "src": "1178:98:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 601,
                            "nodeType": "StructuredDocumentation",
                            "src": "1032:23:3",
                            "text": "@inheritdoc IERC165"
                        },
                        "functionSelector": "01ffc9a7",
                        "id": 624,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "supportsInterface",
                        "nameLocation": "1069:17:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 607,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [
                                {
                                    "id": 605,
                                    "name": "IERC165",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 12352,
                                    "src": "1136:7:3"
                                },
                                {
                                    "id": 606,
                                    "name": "ERC165",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 12146,
                                    "src": "1145:6:3"
                                }
                            ],
                            "src": "1127:25:3"
                        },
                        "parameters": {
                            "id": 604,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 603,
                                    "mutability": "mutable",
                                    "name": "interfaceId",
                                    "nameLocation": "1094:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 624,
                                    "src": "1087:18:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                    },
                                    "typeName": {
                                        "id": 602,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1087:6:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1086:20:3"
                        },
                        "returnParameters": {
                            "id": 610,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 609,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 624,
                                    "src": "1162:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 608,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1162:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1161:6:3"
                        },
                        "scope": 1177,
                        "src": "1060:223:3",
                        "stateMutability": "view",
                        "virtual": true,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5521
                        ],
                        "body": {
                            "id": 633,
                            "nodeType": "Block",
                            "src": "1394:42:3",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 631,
                                        "name": "penalizeBlockDelay",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 582,
                                        "src": "1411:18:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 630,
                                    "id": 632,
                                    "nodeType": "Return",
                                    "src": "1404:25:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 625,
                            "nodeType": "StructuredDocumentation",
                            "src": "1289:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "7f1a15bf",
                        "id": 634,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getPenalizeBlockDelay",
                        "nameLocation": "1329:21:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 627,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1362:8:3"
                        },
                        "parameters": {
                            "id": 626,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1350:2:3"
                        },
                        "returnParameters": {
                            "id": 630,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 629,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 634,
                                    "src": "1385:7:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 628,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1385:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1384:9:3"
                        },
                        "scope": 1177,
                        "src": "1320:116:3",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            5527
                        ],
                        "body": {
                            "id": 643,
                            "nodeType": "Block",
                            "src": "1552:47:3",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 641,
                                        "name": "penalizeBlockExpiration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 584,
                                        "src": "1569:23:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 640,
                                    "id": 642,
                                    "nodeType": "Return",
                                    "src": "1562:30:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 635,
                            "nodeType": "StructuredDocumentation",
                            "src": "1442:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "fb509935",
                        "id": 644,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getPenalizeBlockExpiration",
                        "nameLocation": "1482:26:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 637,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1520:8:3"
                        },
                        "parameters": {
                            "id": 636,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1508:2:3"
                        },
                        "returnParameters": {
                            "id": 640,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 639,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 644,
                                    "src": "1543:7:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 638,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1543:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1542:9:3"
                        },
                        "scope": 1177,
                        "src": "1473:126:3",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 669,
                            "nodeType": "Block",
                            "src": "1694:146:3",
                            "statements": [
                                {
                                    "assignments": [
                                        652
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 652,
                                            "mutability": "mutable",
                                            "name": "transactionTypeByte",
                                            "nameLocation": "1710:19:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 669,
                                            "src": "1704:25:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            },
                                            "typeName": {
                                                "id": 651,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1704:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 659,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 655,
                                                    "name": "rawTransaction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 646,
                                                    "src": "1738:14:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                },
                                                "id": 657,
                                                "indexExpression": {
                                                    "hexValue": "30",
                                                    "id": 656,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1753:1:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1738:17:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                }
                                            ],
                                            "id": 654,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1732:5:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint8_$",
                                                "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                                "id": 653,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1732:5:3",
                                                "typeDescriptions": {}
                                            }
                                        },
                                        "id": 658,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1732:24:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1704:52:3"
                                },
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 666,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    },
                                                    "id": 662,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 660,
                                                        "name": "transactionTypeByte",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 652,
                                                        "src": "1774:19:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "hexValue": "30786330",
                                                        "id": 661,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1797:4:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_192_by_1",
                                                            "typeString": "int_const 192"
                                                        },
                                                        "value": "0xc0"
                                                    },
                                                    "src": "1774:27:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    },
                                                    "id": 665,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 663,
                                                        "name": "transactionTypeByte",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 652,
                                                        "src": "1805:19:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "hexValue": "30786665",
                                                        "id": 664,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1828:4:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_254_by_1",
                                                            "typeString": "int_const 254"
                                                        },
                                                        "value": "0xfe"
                                                    },
                                                    "src": "1805:27:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "1774:58:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "id": 667,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1773:60:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 650,
                                    "id": 668,
                                    "nodeType": "Return",
                                    "src": "1766:67:3"
                                }
                            ]
                        },
                        "id": 670,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isLegacyTransaction",
                        "nameLocation": "1614:19:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 647,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 646,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "1649:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 670,
                                    "src": "1634:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 645,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1634:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1633:31:3"
                        },
                        "returnParameters": {
                            "id": 650,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 649,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 670,
                                    "src": "1688:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 648,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1688:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1687:6:3"
                        },
                        "scope": 1177,
                        "src": "1605:235:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 687,
                            "nodeType": "Block",
                            "src": "1934:55:3",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "id": 684,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 679,
                                                                "name": "rawTransaction",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 672,
                                                                "src": "1958:14:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            },
                                                            "id": 681,
                                                            "indexExpression": {
                                                                "hexValue": "30",
                                                                "id": 680,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1973:1:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "1958:17:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        ],
                                                        "id": 678,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "1952:5:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint8_$",
                                                            "typeString": "type(uint8)"
                                                        },
                                                        "typeName": {
                                                            "id": 677,
                                                            "name": "uint8",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1952:5:3",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 682,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1952:24:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 683,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1980:1:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                },
                                                "src": "1952:29:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "id": 685,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1951:31:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 676,
                                    "id": 686,
                                    "nodeType": "Return",
                                    "src": "1944:38:3"
                                }
                            ]
                        },
                        "id": 688,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isTransactionType1",
                        "nameLocation": "1855:18:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 673,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 672,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "1889:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 688,
                                    "src": "1874:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 671,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1874:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1873:31:3"
                        },
                        "returnParameters": {
                            "id": 676,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 675,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 688,
                                    "src": "1928:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 674,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1928:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1927:6:3"
                        },
                        "scope": 1177,
                        "src": "1846:143:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 705,
                            "nodeType": "Block",
                            "src": "2083:55:3",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "id": 702,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 697,
                                                                "name": "rawTransaction",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 690,
                                                                "src": "2107:14:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            },
                                                            "id": 699,
                                                            "indexExpression": {
                                                                "hexValue": "30",
                                                                "id": 698,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2122:1:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2107:17:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes1",
                                                                "typeString": "bytes1"
                                                            }
                                                        ],
                                                        "id": 696,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "2101:5:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint8_$",
                                                            "typeString": "type(uint8)"
                                                        },
                                                        "typeName": {
                                                            "id": 695,
                                                            "name": "uint8",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2101:5:3",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 700,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2101:24:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "hexValue": "32",
                                                    "id": 701,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2129:1:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_2_by_1",
                                                        "typeString": "int_const 2"
                                                    },
                                                    "value": "2"
                                                },
                                                "src": "2101:29:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "id": 703,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2100:31:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 694,
                                    "id": 704,
                                    "nodeType": "Return",
                                    "src": "2093:38:3"
                                }
                            ]
                        },
                        "id": 706,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isTransactionType2",
                        "nameLocation": "2004:18:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 691,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 690,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "2038:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 706,
                                    "src": "2023:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 689,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2023:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2022:31:3"
                        },
                        "returnParameters": {
                            "id": 694,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 693,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 706,
                                    "src": "2077:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 692,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2077:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2076:6:3"
                        },
                        "scope": 1177,
                        "src": "1995:143:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 726,
                            "nodeType": "Block",
                            "src": "2322:135:3",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 724,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "id": 720,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "arguments": [
                                                    {
                                                        "id": 715,
                                                        "name": "rawTransaction",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 709,
                                                        "src": "2359:14:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 714,
                                                    "name": "isLegacyTransaction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 670,
                                                    "src": "2339:19:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                        "typeString": "function (bytes calldata) pure returns (bool)"
                                                    }
                                                },
                                                "id": 716,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2339:35:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "||",
                                            "rightExpression": {
                                                "arguments": [
                                                    {
                                                        "id": 718,
                                                        "name": "rawTransaction",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 709,
                                                        "src": "2397:14:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 717,
                                                    "name": "isTransactionType1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 688,
                                                    "src": "2378:18:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                        "typeString": "function (bytes calldata) pure returns (bool)"
                                                    }
                                                },
                                                "id": 719,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2378:34:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "src": "2339:73:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "||",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "id": 722,
                                                    "name": "rawTransaction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 709,
                                                    "src": "2435:14:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                ],
                                                "id": 721,
                                                "name": "isTransactionType2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 706,
                                                "src": "2416:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                    "typeString": "function (bytes calldata) pure returns (bool)"
                                                }
                                            },
                                            "id": 723,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2416:34:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "2339:111:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 713,
                                    "id": 725,
                                    "nodeType": "Return",
                                    "src": "2332:118:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 707,
                            "nodeType": "StructuredDocumentation",
                            "src": "2144:84:3",
                            "text": "@return `true` if raw transaction is of types Legacy, 1 or 2. `false` otherwise."
                        },
                        "functionSelector": "8b29ee47",
                        "id": 727,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isTransactionTypeValid",
                        "nameLocation": "2242:22:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 710,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 709,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "2280:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 727,
                                    "src": "2265:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 708,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2265:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2264:31:3"
                        },
                        "returnParameters": {
                            "id": 713,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 712,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 727,
                                    "src": "2316:4:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 711,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2316:4:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2315:6:3"
                        },
                        "scope": 1177,
                        "src": "2233:224:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 803,
                            "nodeType": "Block",
                            "src": "2686:791:3",
                            "statements": [
                                {
                                    "condition": {
                                        "arguments": [
                                            {
                                                "id": 737,
                                                "name": "rawTransaction",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 730,
                                                "src": "2719:14:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 736,
                                            "name": "isTransactionType1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 688,
                                            "src": "2700:18:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                "typeString": "function (bytes calldata) pure returns (bool)"
                                            }
                                        },
                                        "id": 738,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2700:34:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "arguments": [
                                                {
                                                    "id": 759,
                                                    "name": "rawTransaction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 730,
                                                    "src": "2983:14:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                ],
                                                "id": 758,
                                                "name": "isTransactionType2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 706,
                                                "src": "2964:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                    "typeString": "function (bytes calldata) pure returns (bool)"
                                                }
                                            },
                                            "id": 760,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2964:34:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseBody": {
                                            "id": 798,
                                            "nodeType": "Block",
                                            "src": "3224:219:3",
                                            "statements": [
                                                {
                                                    "expression": {
                                                        "id": 796,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "components": [
                                                                {
                                                                    "expression": {
                                                                        "id": 780,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3239:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 782,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "nonce",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5464,
                                                                    "src": "3239:17:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 783,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3270:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 784,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "gasLimit",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5466,
                                                                    "src": "3270:20:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 785,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3304:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 786,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "to",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5468,
                                                                    "src": "3304:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 787,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3332:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 788,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "value",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5470,
                                                                    "src": "3332:17:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 789,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3363:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 790,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "data",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5472,
                                                                    "src": "3363:16:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 791,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "nodeType": "TupleExpression",
                                                            "src": "3238:142:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "arguments": [
                                                                {
                                                                    "id": 794,
                                                                    "name": "rawTransaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 730,
                                                                    "src": "3417:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 792,
                                                                    "name": "RLPReader",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9409,
                                                                    "src": "3383:9:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_RLPReader_$9409_$",
                                                                        "typeString": "type(library RLPReader)"
                                                                    }
                                                                },
                                                                "id": 793,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "decodeLegacyTransaction",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 8774,
                                                                "src": "3383:33:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes calldata) pure returns (uint256,uint256,address,uint256,bytes memory)"
                                                                }
                                                            },
                                                            "id": 795,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3383:49:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "src": "3238:194:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 797,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "3238:194:3"
                                                }
                                            ]
                                        },
                                        "id": 799,
                                        "nodeType": "IfStatement",
                                        "src": "2960:483:3",
                                        "trueBody": {
                                            "id": 779,
                                            "nodeType": "Block",
                                            "src": "3000:218:3",
                                            "statements": [
                                                {
                                                    "expression": {
                                                        "id": 777,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "components": [
                                                                {
                                                                    "expression": {
                                                                        "id": 761,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3015:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 763,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "nonce",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5464,
                                                                    "src": "3015:17:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 764,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3046:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 765,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "gasLimit",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5466,
                                                                    "src": "3046:20:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 766,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3080:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 767,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "to",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5468,
                                                                    "src": "3080:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 768,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3108:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 769,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "value",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5470,
                                                                    "src": "3108:17:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 770,
                                                                        "name": "transaction",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 734,
                                                                        "src": "3139:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                                        }
                                                                    },
                                                                    "id": 771,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberName": "data",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5472,
                                                                    "src": "3139:16:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 772,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "nodeType": "TupleExpression",
                                                            "src": "3014:142:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "arguments": [
                                                                {
                                                                    "id": 775,
                                                                    "name": "rawTransaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 730,
                                                                    "src": "3192:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 773,
                                                                    "name": "RLPReader",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9409,
                                                                    "src": "3159:9:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_RLPReader_$9409_$",
                                                                        "typeString": "type(library RLPReader)"
                                                                    }
                                                                },
                                                                "id": 774,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "decodeTransactionType2",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 8900,
                                                                "src": "3159:32:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes calldata) pure returns (uint256,uint256,address,uint256,bytes memory)"
                                                                }
                                                            },
                                                            "id": 776,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3159:48:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "src": "3014:193:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 778,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "3014:193:3"
                                                }
                                            ]
                                        }
                                    },
                                    "id": 800,
                                    "nodeType": "IfStatement",
                                    "src": "2696:747:3",
                                    "trueBody": {
                                        "id": 757,
                                        "nodeType": "Block",
                                        "src": "2736:218:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 755,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "components": [
                                                            {
                                                                "expression": {
                                                                    "id": 739,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2751:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 741,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "nonce",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5464,
                                                                "src": "2751:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 742,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2782:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 743,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "gasLimit",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5466,
                                                                "src": "2782:20:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 744,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2816:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 745,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "to",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5468,
                                                                "src": "2816:14:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 746,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2844:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 747,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "value",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5470,
                                                                "src": "2844:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 748,
                                                                    "name": "transaction",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 734,
                                                                    "src": "2875:11:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                                    }
                                                                },
                                                                "id": 749,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "data",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5472,
                                                                "src": "2875:16:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            }
                                                        ],
                                                        "id": 750,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "TupleExpression",
                                                        "src": "2750:142:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                            "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 753,
                                                                "name": "rawTransaction",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 730,
                                                                "src": "2928:14:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 751,
                                                                "name": "RLPReader",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9409,
                                                                "src": "2895:9:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_RLPReader_$9409_$",
                                                                    "typeString": "type(library RLPReader)"
                                                                }
                                                            },
                                                            "id": 752,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "decodeTransactionType1",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8837,
                                                            "src": "2895:32:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                                "typeString": "function (bytes calldata) pure returns (uint256,uint256,address,uint256,bytes memory)"
                                                            }
                                                        },
                                                        "id": 754,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2895:48:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$",
                                                            "typeString": "tuple(uint256,uint256,address,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "src": "2750:193:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 756,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2750:193:3"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 801,
                                        "name": "transaction",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 734,
                                        "src": "3459:11:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                            "typeString": "struct IPenalizer.Transaction memory"
                                        }
                                    },
                                    "functionReturnParameters": 735,
                                    "id": 802,
                                    "nodeType": "Return",
                                    "src": "3452:18:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 728,
                            "nodeType": "StructuredDocumentation",
                            "src": "2463:107:3",
                            "text": "@return transaction The details that the `Penalizer` needs to decide if the transaction is penalizable."
                        },
                        "functionSelector": "25896446",
                        "id": 804,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "decodeTransaction",
                        "nameLocation": "2584:17:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 731,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 730,
                                    "mutability": "mutable",
                                    "name": "rawTransaction",
                                    "nameLocation": "2617:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 804,
                                    "src": "2602:29:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 729,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2602:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2601:31:3"
                        },
                        "returnParameters": {
                            "id": 735,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 734,
                                    "mutability": "mutable",
                                    "name": "transaction",
                                    "nameLocation": "2673:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 804,
                                    "src": "2654:30:3",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                        "typeString": "struct IPenalizer.Transaction"
                                    },
                                    "typeName": {
                                        "id": 733,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 732,
                                            "name": "Transaction",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5473,
                                            "src": "2654:11:3"
                                        },
                                        "referencedDeclaration": 5473,
                                        "src": "2654:11:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Transaction_$5473_storage_ptr",
                                            "typeString": "struct IPenalizer.Transaction"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2653:32:3"
                        },
                        "scope": 1177,
                        "src": "2575:902:3",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "47885781",
                        "id": 808,
                        "mutability": "mutable",
                        "name": "commits",
                        "nameLocation": "3518:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1177,
                        "src": "3483:42:3",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                        },
                        "typeName": {
                            "id": 807,
                            "keyType": {
                                "id": 805,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3491:7:3",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "3483:27:3",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                            },
                            "valueType": {
                                "id": 806,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3502:7:3",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            5479
                        ],
                        "body": {
                            "id": 835,
                            "nodeType": "Block",
                            "src": "3617:193:3",
                            "statements": [
                                {
                                    "assignments": [
                                        816
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 816,
                                            "mutability": "mutable",
                                            "name": "readyBlockNumber",
                                            "nameLocation": "3635:16:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 835,
                                            "src": "3627:24:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 815,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3627:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 821,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 820,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 817,
                                                "name": "block",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967292,
                                                "src": "3654:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_block",
                                                    "typeString": "block"
                                                }
                                            },
                                            "id": 818,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "number",
                                            "nodeType": "MemberAccess",
                                            "src": "3654:12:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                            "id": 819,
                                            "name": "penalizeBlockDelay",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 582,
                                            "src": "3669:18:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "3654:33:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3627:60:3"
                                },
                                {
                                    "expression": {
                                        "id": 826,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 822,
                                                "name": "commits",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 808,
                                                "src": "3697:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                    "typeString": "mapping(bytes32 => uint256)"
                                                }
                                            },
                                            "id": 824,
                                            "indexExpression": {
                                                "id": 823,
                                                "name": "commitHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 811,
                                                "src": "3705:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3697:19:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 825,
                                            "name": "readyBlockNumber",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 816,
                                            "src": "3719:16:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "3697:38:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 827,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3697:38:3"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 829,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "3762:3:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 830,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "3762:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 831,
                                                "name": "commitHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 811,
                                                "src": "3774:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 832,
                                                "name": "readyBlockNumber",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 816,
                                                "src": "3786:16:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 828,
                                            "name": "CommitAdded",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5462,
                                            "src": "3750:11:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,bytes32,uint256)"
                                            }
                                        },
                                        "id": 833,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3750:53:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 834,
                                    "nodeType": "EmitStatement",
                                    "src": "3745:58:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 809,
                            "nodeType": "StructuredDocumentation",
                            "src": "3532:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "f14fcbc8",
                        "id": 836,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "commit",
                        "nameLocation": "3572:6:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 813,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "3608:8:3"
                        },
                        "parameters": {
                            "id": 812,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 811,
                                    "mutability": "mutable",
                                    "name": "commitHash",
                                    "nameLocation": "3587:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 836,
                                    "src": "3579:18:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 810,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3579:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3578:20:3"
                        },
                        "returnParameters": {
                            "id": 814,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3617:0:3"
                        },
                        "scope": 1177,
                        "src": "3563:247:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 903,
                            "nodeType": "Block",
                            "src": "3949:629:3",
                            "statements": [
                                {
                                    "assignments": [
                                        840
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 840,
                                            "mutability": "mutable",
                                            "name": "commitHash",
                                            "nameLocation": "3967:10:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 903,
                                            "src": "3959:18:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 839,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3959:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 852,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 845,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "4017:3:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 846,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "data",
                                                                "nodeType": "MemberAccess",
                                                                "src": "4017:8:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                                    "typeString": "bytes calldata"
                                                                }
                                                            ],
                                                            "id": 844,
                                                            "name": "keccak256",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967288,
                                                            "src": "4007:9:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 847,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4007:19:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 848,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "4028:3:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 849,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4028:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 842,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967295,
                                                        "src": "3990:3:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 843,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "encodePacked",
                                                    "nodeType": "MemberAccess",
                                                    "src": "3990:16:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 850,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3990:49:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "id": 841,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967288,
                                            "src": "3980:9:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 851,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3980:60:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3959:81:3"
                                },
                                {
                                    "assignments": [
                                        854
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 854,
                                            "mutability": "mutable",
                                            "name": "readyBlockNumber",
                                            "nameLocation": "4058:16:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 903,
                                            "src": "4050:24:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 853,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4050:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 858,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 855,
                                            "name": "commits",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 808,
                                            "src": "4077:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                "typeString": "mapping(bytes32 => uint256)"
                                            }
                                        },
                                        "id": 857,
                                        "indexExpression": {
                                            "id": 856,
                                            "name": "commitHash",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 840,
                                            "src": "4085:10:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4077:19:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4050:46:3"
                                },
                                {
                                    "expression": {
                                        "id": 862,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "delete",
                                        "prefix": true,
                                        "src": "4106:26:3",
                                        "subExpression": {
                                            "baseExpression": {
                                                "id": 859,
                                                "name": "commits",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 808,
                                                "src": "4113:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                    "typeString": "mapping(bytes32 => uint256)"
                                                }
                                            },
                                            "id": 861,
                                            "indexExpression": {
                                                "id": 860,
                                                "name": "commitHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 840,
                                                "src": "4121:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "4113:19:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 863,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4106:26:3"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 874,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 864,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967281,
                                                "src": "4261:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                }
                                            },
                                            "id": 865,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "4261:10:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 870,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "4288:7:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint160_$",
                                                                    "typeString": "type(uint160)"
                                                                },
                                                                "typeName": {
                                                                    "id": 869,
                                                                    "name": "uint160",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "4288:7:3",
                                                                    "typeDescriptions": {}
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_type$_t_uint160_$",
                                                                    "typeString": "type(uint160)"
                                                                }
                                                            ],
                                                            "id": 868,
                                                            "name": "type",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967269,
                                                            "src": "4283:4:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                                "typeString": "function () pure"
                                                            }
                                                        },
                                                        "id": 871,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4283:13:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_meta_type_t_uint160",
                                                            "typeString": "type(uint160)"
                                                        }
                                                    },
                                                    "id": 872,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "max",
                                                    "nodeType": "MemberAccess",
                                                    "src": "4283:17:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint160",
                                                        "typeString": "uint160"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint160",
                                                        "typeString": "uint160"
                                                    }
                                                ],
                                                "id": 867,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "4275:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 866,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4275:7:3",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 873,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4275:26:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "4261:40:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 901,
                                    "nodeType": "IfStatement",
                                    "src": "4258:303:3",
                                    "trueBody": {
                                        "id": 900,
                                        "nodeType": "Block",
                                        "src": "4303:258:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 878,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 876,
                                                                "name": "readyBlockNumber",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 854,
                                                                "src": "4325:16:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 877,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4345:1:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "4325:21:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6e6f20636f6d6d6974",
                                                            "id": 879,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4348:11:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2af0ca6efea1fb7a41c8fa819280b67251f77665354409b29c9708284550628c",
                                                                "typeString": "literal_string \"no commit\""
                                                            },
                                                            "value": "no commit"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2af0ca6efea1fb7a41c8fa819280b67251f77665354409b29c9708284550628c",
                                                                "typeString": "literal_string \"no commit\""
                                                            }
                                                        ],
                                                        "id": 875,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "4317:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 880,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4317:43:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 881,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4317:43:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 886,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 883,
                                                                "name": "readyBlockNumber",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 854,
                                                                "src": "4382:16:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 884,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967292,
                                                                    "src": "4401:5:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 885,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "number",
                                                                "nodeType": "MemberAccess",
                                                                "src": "4401:12:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4382:31:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "72657665616c2070656e616c697a6520746f6f20736f6f6e",
                                                            "id": 887,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4415:26:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2cc5d4292d75de8bb25701550887b414bd0cdcd4ed30afd012888da9172f7005",
                                                                "typeString": "literal_string \"reveal penalize too soon\""
                                                            },
                                                            "value": "reveal penalize too soon"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2cc5d4292d75de8bb25701550887b414bd0cdcd4ed30afd012888da9172f7005",
                                                                "typeString": "literal_string \"reveal penalize too soon\""
                                                            }
                                                        ],
                                                        "id": 882,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "4374:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 888,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4374:68:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 889,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4374:68:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 896,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 893,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 891,
                                                                    "name": "readyBlockNumber",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 854,
                                                                    "src": "4464:16:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "id": 892,
                                                                    "name": "penalizeBlockExpiration",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 584,
                                                                    "src": "4483:23:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "4464:42:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 894,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967292,
                                                                    "src": "4509:5:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 895,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "number",
                                                                "nodeType": "MemberAccess",
                                                                "src": "4509:12:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4464:57:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "72657665616c2070656e616c697a6520746f6f206c617465",
                                                            "id": 897,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4523:26:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ccb3426f4f5b94e37bc35249e02c91ac8fbab1a56e18e158320d2d96545171d4",
                                                                "typeString": "literal_string \"reveal penalize too late\""
                                                            },
                                                            "value": "reveal penalize too late"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ccb3426f4f5b94e37bc35249e02c91ac8fbab1a56e18e158320d2d96545171d4",
                                                                "typeString": "literal_string \"reveal penalize too late\""
                                                            }
                                                        ],
                                                        "id": 890,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "4456:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 898,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4456:94:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 899,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4456:94:3"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "id": 902,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "4570:1:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 837,
                            "nodeType": "StructuredDocumentation",
                            "src": "3816:100:3",
                            "text": "Modifier that verifies there was a `commit` operation before this call that has not expired yet."
                        },
                        "id": 904,
                        "name": "commitRevealOnly",
                        "nameLocation": "3930:16:3",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 838,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3946:2:3"
                        },
                        "src": "3921:657:3",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "baseFunctions": [
                            5496
                        ],
                        "body": {
                            "id": 935,
                            "nodeType": "Block",
                            "src": "4891:117:3",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 924,
                                                "name": "randomValue",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 918,
                                                "src": "4902:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 925,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "4901:13:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 926,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4901:13:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 928,
                                                "name": "unsignedTx1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 907,
                                                "src": "4947:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 929,
                                                "name": "signature1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 909,
                                                "src": "4960:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 930,
                                                "name": "unsignedTx2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 911,
                                                "src": "4972:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 931,
                                                "name": "signature2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 913,
                                                "src": "4985:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 932,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 916,
                                                "src": "4997:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            ],
                                            "id": 927,
                                            "name": "_penalizeRepeatedNonce",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1053,
                                            "src": "4924:22:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_contract$_IRelayHub_$5896_$returns$__$",
                                                "typeString": "function (bytes calldata,bytes calldata,bytes calldata,bytes calldata,contract IRelayHub)"
                                            }
                                        },
                                        "id": 933,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4924:77:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 934,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4924:77:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 905,
                            "nodeType": "StructuredDocumentation",
                            "src": "4584:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "ab456ccb",
                        "id": 936,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 922,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 921,
                                    "name": "commitRevealOnly",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 904,
                                    "src": "4874:16:3"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4874:16:3"
                            }
                        ],
                        "name": "penalizeRepeatedNonce",
                        "nameLocation": "4624:21:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 920,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "4861:8:3"
                        },
                        "parameters": {
                            "id": 919,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 907,
                                    "mutability": "mutable",
                                    "name": "unsignedTx1",
                                    "nameLocation": "4670:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4655:26:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 906,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4655:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 909,
                                    "mutability": "mutable",
                                    "name": "signature1",
                                    "nameLocation": "4706:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4691:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 908,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4691:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 911,
                                    "mutability": "mutable",
                                    "name": "unsignedTx2",
                                    "nameLocation": "4741:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4726:26:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 910,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4726:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 913,
                                    "mutability": "mutable",
                                    "name": "signature2",
                                    "nameLocation": "4777:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4762:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 912,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4762:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 916,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "4807:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4797:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 915,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 914,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "4797:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "4797:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 918,
                                    "mutability": "mutable",
                                    "name": "randomValue",
                                    "nameLocation": "4828:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 936,
                                    "src": "4820:19:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 917,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4820:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4645:200:3"
                        },
                        "returnParameters": {
                            "id": 923,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4891:0:3"
                        },
                        "scope": 1177,
                        "src": "4615:393:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1052,
                            "nodeType": "Block",
                            "src": "5233:1100:3",
                            "statements": [
                                {
                                    "assignments": [
                                        951
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 951,
                                            "mutability": "mutable",
                                            "name": "addr1",
                                            "nameLocation": "5251:5:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5243:13:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 950,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5243:7:3",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 958,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 956,
                                                "name": "signature1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 940,
                                                "src": "5290:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 953,
                                                        "name": "unsignedTx1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 938,
                                                        "src": "5269:11:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 952,
                                                    "name": "keccak256",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967288,
                                                    "src": "5259:9:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                    }
                                                },
                                                "id": 954,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5259:22:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "id": 955,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "recover",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11871,
                                            "src": "5259:30:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                                                "typeString": "function (bytes32,bytes memory) pure returns (address)"
                                            }
                                        },
                                        "id": 957,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5259:42:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5243:58:3"
                                },
                                {
                                    "assignments": [
                                        960
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 960,
                                            "mutability": "mutable",
                                            "name": "addr2",
                                            "nameLocation": "5319:5:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5311:13:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 959,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5311:7:3",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 967,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 965,
                                                "name": "signature2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 944,
                                                "src": "5358:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 962,
                                                        "name": "unsignedTx2",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 942,
                                                        "src": "5337:11:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 961,
                                                    "name": "keccak256",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967288,
                                                    "src": "5327:9:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                    }
                                                },
                                                "id": 963,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5327:22:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "id": 964,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "recover",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11871,
                                            "src": "5327:30:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                                                "typeString": "function (bytes32,bytes memory) pure returns (address)"
                                            }
                                        },
                                        "id": 966,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5327:42:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5311:58:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 971,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 969,
                                                    "name": "addr1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 951,
                                                    "src": "5388:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "id": 970,
                                                    "name": "addr2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 960,
                                                    "src": "5397:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "5388:14:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "446966666572656e74207369676e6572",
                                                "id": 972,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5404:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_77f12a9a496b062a6cd97e7e01fa86a04f9bf1daea28d37b7b1a6dcb31f1445a",
                                                    "typeString": "literal_string \"Different signer\""
                                                },
                                                "value": "Different signer"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_77f12a9a496b062a6cd97e7e01fa86a04f9bf1daea28d37b7b1a6dcb31f1445a",
                                                    "typeString": "literal_string \"Different signer\""
                                                }
                                            ],
                                            "id": 968,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "5380:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 973,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5380:43:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 974,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5380:43:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 981,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 976,
                                                    "name": "addr1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 951,
                                                    "src": "5441:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 979,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5458:1:3",
                                                            "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": 978,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "5450:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 977,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5450:7:3",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 980,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5450:10:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "5441:19:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "65637265636f766572206661696c6564",
                                                "id": 982,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5462:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_e58270ee9df7f123e74980140856b47d916f4de0f2167d7d0ac95254b56c5356",
                                                    "typeString": "literal_string \"ecrecover failed\""
                                                },
                                                "value": "ecrecover failed"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_e58270ee9df7f123e74980140856b47d916f4de0f2167d7d0ac95254b56c5356",
                                                    "typeString": "literal_string \"ecrecover failed\""
                                                }
                                            ],
                                            "id": 975,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "5433:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 983,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5433:48:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 984,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5433:48:3"
                                },
                                {
                                    "assignments": [
                                        987
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 987,
                                            "mutability": "mutable",
                                            "name": "decodedTx1",
                                            "nameLocation": "5511:10:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5492:29:3",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                "typeString": "struct IPenalizer.Transaction"
                                            },
                                            "typeName": {
                                                "id": 986,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 985,
                                                    "name": "Transaction",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5473,
                                                    "src": "5492:11:3"
                                                },
                                                "referencedDeclaration": 5473,
                                                "src": "5492:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Transaction_$5473_storage_ptr",
                                                    "typeString": "struct IPenalizer.Transaction"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 991,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 989,
                                                "name": "unsignedTx1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 938,
                                                "src": "5542:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 988,
                                            "name": "decodeTransaction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 804,
                                            "src": "5524:17:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_struct$_Transaction_$5473_memory_ptr_$",
                                                "typeString": "function (bytes calldata) pure returns (struct IPenalizer.Transaction memory)"
                                            }
                                        },
                                        "id": 990,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5524:30:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                            "typeString": "struct IPenalizer.Transaction memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5492:62:3"
                                },
                                {
                                    "assignments": [
                                        994
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 994,
                                            "mutability": "mutable",
                                            "name": "decodedTx2",
                                            "nameLocation": "5583:10:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5564:29:3",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                "typeString": "struct IPenalizer.Transaction"
                                            },
                                            "typeName": {
                                                "id": 993,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 992,
                                                    "name": "Transaction",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5473,
                                                    "src": "5564:11:3"
                                                },
                                                "referencedDeclaration": 5473,
                                                "src": "5564:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Transaction_$5473_storage_ptr",
                                                    "typeString": "struct IPenalizer.Transaction"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 998,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 996,
                                                "name": "unsignedTx2",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 942,
                                                "src": "5614:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 995,
                                            "name": "decodeTransaction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 804,
                                            "src": "5596:17:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_struct$_Transaction_$5473_memory_ptr_$",
                                                "typeString": "function (bytes calldata) pure returns (struct IPenalizer.Transaction memory)"
                                            }
                                        },
                                        "id": 997,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5596:30:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                            "typeString": "struct IPenalizer.Transaction memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5564:62:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 1004,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 1000,
                                                        "name": "decodedTx1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 987,
                                                        "src": "5886:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                        }
                                                    },
                                                    "id": 1001,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "nonce",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 5464,
                                                    "src": "5886:16:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "expression": {
                                                        "id": 1002,
                                                        "name": "decodedTx2",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 994,
                                                        "src": "5906:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                            "typeString": "struct IPenalizer.Transaction memory"
                                                        }
                                                    },
                                                    "id": 1003,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "nonce",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 5464,
                                                    "src": "5906:16:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "5886:36:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "446966666572656e74206e6f6e6365",
                                                "id": 1005,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5924:17:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_6136512038ef862fc08c559b09cc7aa2cae962bda7bdd342d620a678fd11a712",
                                                    "typeString": "literal_string \"Different nonce\""
                                                },
                                                "value": "Different nonce"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_6136512038ef862fc08c559b09cc7aa2cae962bda7bdd342d620a678fd11a712",
                                                    "typeString": "literal_string \"Different nonce\""
                                                }
                                            ],
                                            "id": 999,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "5878:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 1006,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5878:64:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1007,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5878:64:3"
                                },
                                {
                                    "assignments": [
                                        1009
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1009,
                                            "mutability": "mutable",
                                            "name": "dataToCheck1",
                                            "nameLocation": "5966:12:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "5953:25:3",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 1008,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5953:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1021,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 1012,
                                                    "name": "decodedTx1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 987,
                                                    "src": "6006:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1013,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "data",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5472,
                                                "src": "6006:15:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1014,
                                                    "name": "decodedTx1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 987,
                                                    "src": "6023:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1015,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "gasLimit",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5466,
                                                "src": "6023:19:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1016,
                                                    "name": "decodedTx1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 987,
                                                    "src": "6044:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1017,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "to",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5468,
                                                "src": "6044:13:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1018,
                                                    "name": "decodedTx1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 987,
                                                    "src": "6059:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1019,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "value",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5470,
                                                "src": "6059:16:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1010,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967295,
                                                "src": "5989:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                }
                                            },
                                            "id": 1011,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "src": "5989:16:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                            }
                                        },
                                        "id": 1020,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5989:87:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5953:123:3"
                                },
                                {
                                    "assignments": [
                                        1023
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1023,
                                            "mutability": "mutable",
                                            "name": "dataToCheck2",
                                            "nameLocation": "6100:12:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1052,
                                            "src": "6087:25:3",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 1022,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6087:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1035,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 1026,
                                                    "name": "decodedTx2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 994,
                                                    "src": "6140:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1027,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "data",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5472,
                                                "src": "6140:15:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1028,
                                                    "name": "decodedTx2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 994,
                                                    "src": "6157:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1029,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "gasLimit",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5466,
                                                "src": "6157:19:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1030,
                                                    "name": "decodedTx2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 994,
                                                    "src": "6178:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1031,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "to",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5468,
                                                "src": "6178:13:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1032,
                                                    "name": "decodedTx2",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 994,
                                                    "src": "6193:10:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "id": 1033,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "value",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 5470,
                                                "src": "6193:16:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1024,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967295,
                                                "src": "6123:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                }
                                            },
                                            "id": 1025,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodePacked",
                                            "nodeType": "MemberAccess",
                                            "src": "6123:16:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                            }
                                        },
                                        "id": 1034,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6123:87:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6087:123:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "id": 1043,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1038,
                                                            "name": "dataToCheck1",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1009,
                                                            "src": "6239:12:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1037,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967288,
                                                        "src": "6229:9:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 1039,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6229:23:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1041,
                                                            "name": "dataToCheck2",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1023,
                                                            "src": "6266:12:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1040,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967288,
                                                        "src": "6256:9:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 1042,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6256:23:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "src": "6229:50:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "747820697320657175616c",
                                                "id": 1044,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6281:13:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_822839638978993ab14d31c59e1ff905c0afbb4298c5da6313df4ee328f5a727",
                                                    "typeString": "literal_string \"tx is equal\""
                                                },
                                                "value": "tx is equal"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_822839638978993ab14d31c59e1ff905c0afbb4298c5da6313df4ee328f5a727",
                                                    "typeString": "literal_string \"tx is equal\""
                                                }
                                            ],
                                            "id": 1036,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "6221:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 1045,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6221:74:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1046,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6221:74:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1048,
                                                "name": "addr1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 951,
                                                "src": "6315:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 1049,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 947,
                                                "src": "6322:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            ],
                                            "id": 1047,
                                            "name": "penalize",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1176,
                                            "src": "6306:8:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_contract$_IRelayHub_$5896_$returns$__$",
                                                "typeString": "function (address,contract IRelayHub)"
                                            }
                                        },
                                        "id": 1050,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6306:20:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1051,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6306:20:3"
                                }
                            ]
                        },
                        "id": 1053,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_penalizeRepeatedNonce",
                        "nameLocation": "5023:22:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 948,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 938,
                                    "mutability": "mutable",
                                    "name": "unsignedTx1",
                                    "nameLocation": "5070:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5055:26:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 937,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5055:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 940,
                                    "mutability": "mutable",
                                    "name": "signature1",
                                    "nameLocation": "5106:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5091:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 939,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5091:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 942,
                                    "mutability": "mutable",
                                    "name": "unsignedTx2",
                                    "nameLocation": "5141:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5126:26:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 941,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5126:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 944,
                                    "mutability": "mutable",
                                    "name": "signature2",
                                    "nameLocation": "5177:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5162:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 943,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5162:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 947,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "5207:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1053,
                                    "src": "5197:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 946,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 945,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "5197:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "5197:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5045:171:3"
                        },
                        "returnParameters": {
                            "id": 949,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5233:0:3"
                        },
                        "scope": 1177,
                        "src": "5014:1319:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            5509
                        ],
                        "body": {
                            "id": 1078,
                            "nodeType": "Block",
                            "src": "6578:95:3",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 1069,
                                                "name": "randomValue",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1063,
                                                "src": "6589:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 1070,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "6588:13:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1071,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6588:13:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1073,
                                                "name": "unsignedTx",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1056,
                                                "src": "6639:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 1074,
                                                "name": "signature",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1058,
                                                "src": "6651:9:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            },
                                            {
                                                "id": 1075,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1061,
                                                "src": "6662:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            ],
                                            "id": 1072,
                                            "name": "_penalizeIllegalTransaction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1156,
                                            "src": "6611:27:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_contract$_IRelayHub_$5896_$returns$__$",
                                                "typeString": "function (bytes calldata,bytes calldata,contract IRelayHub)"
                                            }
                                        },
                                        "id": 1076,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6611:55:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1077,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6611:55:3"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1054,
                            "nodeType": "StructuredDocumentation",
                            "src": "6339:26:3",
                            "text": "@inheritdoc IPenalizer"
                        },
                        "functionSelector": "a640bc74",
                        "id": 1079,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1067,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1066,
                                    "name": "commitRevealOnly",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 904,
                                    "src": "6561:16:3"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6561:16:3"
                            }
                        ],
                        "name": "penalizeIllegalTransaction",
                        "nameLocation": "6379:26:3",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 1065,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "6548:8:3"
                        },
                        "parameters": {
                            "id": 1064,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1056,
                                    "mutability": "mutable",
                                    "name": "unsignedTx",
                                    "nameLocation": "6430:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1079,
                                    "src": "6415:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 1055,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6415:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1058,
                                    "mutability": "mutable",
                                    "name": "signature",
                                    "nameLocation": "6465:9:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1079,
                                    "src": "6450:24:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 1057,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6450:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1061,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "6494:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1079,
                                    "src": "6484:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 1060,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1059,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "6484:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "6484:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1063,
                                    "mutability": "mutable",
                                    "name": "randomValue",
                                    "nameLocation": "6515:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1079,
                                    "src": "6507:19:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1062,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6507:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6405:127:3"
                        },
                        "returnParameters": {
                            "id": 1068,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6578:0:3"
                        },
                        "scope": 1177,
                        "src": "6370:303:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1155,
                            "nodeType": "Block",
                            "src": "6830:625:3",
                            "statements": [
                                {
                                    "condition": {
                                        "arguments": [
                                            {
                                                "id": 1090,
                                                "name": "unsignedTx",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1081,
                                                "src": "6867:10:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "id": 1089,
                                            "name": "isTransactionTypeValid",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 727,
                                            "src": "6844:22:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                                                "typeString": "function (bytes calldata) pure returns (bool)"
                                            }
                                        },
                                        "id": 1091,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6844:34:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1130,
                                    "nodeType": "IfStatement",
                                    "src": "6840:455:3",
                                    "trueBody": {
                                        "id": 1129,
                                        "nodeType": "Block",
                                        "src": "6880:415:3",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1094
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1094,
                                                        "mutability": "mutable",
                                                        "name": "decodedTx",
                                                        "nameLocation": "6913:9:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1129,
                                                        "src": "6894:28:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                            "typeString": "struct IPenalizer.Transaction"
                                                        },
                                                        "typeName": {
                                                            "id": 1093,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 1092,
                                                                "name": "Transaction",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 5473,
                                                                "src": "6894:11:3"
                                                            },
                                                            "referencedDeclaration": 5473,
                                                            "src": "6894:11:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Transaction_$5473_storage_ptr",
                                                                "typeString": "struct IPenalizer.Transaction"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1098,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1096,
                                                            "name": "unsignedTx",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1081,
                                                            "src": "6943:10:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                                "typeString": "bytes calldata"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                                "typeString": "bytes calldata"
                                                            }
                                                        ],
                                                        "id": 1095,
                                                        "name": "decodeTransaction",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 804,
                                                        "src": "6925:17:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_struct$_Transaction_$5473_memory_ptr_$",
                                                            "typeString": "function (bytes calldata) pure returns (struct IPenalizer.Transaction memory)"
                                                        }
                                                    },
                                                    "id": 1097,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6925:29:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                        "typeString": "struct IPenalizer.Transaction memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6894:60:3"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 1105,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 1099,
                                                            "name": "decodedTx",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1094,
                                                            "src": "6972:9:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                "typeString": "struct IPenalizer.Transaction memory"
                                                            }
                                                        },
                                                        "id": 1100,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "to",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5468,
                                                        "src": "6972:12:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 1103,
                                                                "name": "hub",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1086,
                                                                "src": "6996:3:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                                    "typeString": "contract IRelayHub"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                                    "typeString": "contract IRelayHub"
                                                                }
                                                            ],
                                                            "id": 1102,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "6988:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 1101,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "6988:7:3",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 1104,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6988:12:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "6972:28:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1128,
                                                "nodeType": "IfStatement",
                                                "src": "6968:317:3",
                                                "trueBody": {
                                                    "id": 1127,
                                                    "nodeType": "Block",
                                                    "src": "7002:283:3",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                1107
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 1107,
                                                                    "mutability": "mutable",
                                                                    "name": "selector",
                                                                    "nameLocation": "7027:8:3",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 1127,
                                                                    "src": "7020:15:3",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1106,
                                                                        "name": "bytes4",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7020:6:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 1113,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 1110,
                                                                            "name": "decodedTx",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1094,
                                                                            "src": "7060:9:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Transaction_$5473_memory_ptr",
                                                                                "typeString": "struct IPenalizer.Transaction memory"
                                                                            }
                                                                        },
                                                                        "id": 1111,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "data",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5472,
                                                                        "src": "7060:14:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 1108,
                                                                        "name": "GsnUtils",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8572,
                                                                        "src": "7038:8:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_GsnUtils_$8572_$",
                                                                            "typeString": "type(library GsnUtils)"
                                                                        }
                                                                    },
                                                                    "id": 1109,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "getMethodSig",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 8542,
                                                                    "src": "7038:21:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                                        "typeString": "function (bytes memory) pure returns (bytes4)"
                                                                    }
                                                                },
                                                                "id": 1112,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7038:37:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes4",
                                                                    "typeString": "bytes4"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "7020:55:3"
                                                        },
                                                        {
                                                            "assignments": [
                                                                1115
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 1115,
                                                                    "mutability": "mutable",
                                                                    "name": "isWrongMethodCall",
                                                                    "nameLocation": "7098:17:3",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 1127,
                                                                    "src": "7093:22:3",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1114,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7093:4:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 1121,
                                                            "initialValue": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bytes4",
                                                                    "typeString": "bytes4"
                                                                },
                                                                "id": 1120,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1116,
                                                                    "name": "selector",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1107,
                                                                    "src": "7118:8:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 1117,
                                                                            "name": "IRelayHub",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5896,
                                                                            "src": "7130:9:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IRelayHub_$5896_$",
                                                                                "typeString": "type(contract IRelayHub)"
                                                                            }
                                                                        },
                                                                        "id": 1118,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "relayCall",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5729,
                                                                        "src": "7130:19:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_declaration_nonpayable$_t_string_calldata_ptr_$_t_uint256_$_t_struct$_RelayRequest_$8491_calldata_ptr_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_uint256_$_t_enum$_RelayCallStatus_$5668_$_t_bytes_memory_ptr_$",
                                                                            "typeString": "function IRelayHub.relayCall(string calldata,uint256,struct GsnTypes.RelayRequest calldata,bytes calldata,bytes calldata) returns (bool,uint256,enum IRelayHub.RelayCallStatus,bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 1119,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7130:28:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                "src": "7118:40:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "7093:65:3"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1123,
                                                                        "name": "isWrongMethodCall",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1115,
                                                                        "src": "7205:17:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "4c6567616c2072656c6179207472616e73616374696f6e",
                                                                        "id": 1124,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7244:25:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_22b6e321d1f4cb50754e524e834e05384aed148cd455d6fb6045faefaf95dc1a",
                                                                            "typeString": "literal_string \"Legal relay transaction\""
                                                                        },
                                                                        "value": "Legal relay transaction"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_22b6e321d1f4cb50754e524e834e05384aed148cd455d6fb6045faefaf95dc1a",
                                                                            "typeString": "literal_string \"Legal relay transaction\""
                                                                        }
                                                                    ],
                                                                    "id": 1122,
                                                                    "name": "require",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        4294967278,
                                                                        4294967278
                                                                    ],
                                                                    "referencedDeclaration": 4294967278,
                                                                    "src": "7176:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (bool,string memory) pure"
                                                                    }
                                                                },
                                                                "id": 1125,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7176:94:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1126,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7176:94:3"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [
                                        1132
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1132,
                                            "mutability": "mutable",
                                            "name": "relay",
                                            "nameLocation": "7312:5:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1155,
                                            "src": "7304:13:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 1131,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7304:7:3",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1139,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 1137,
                                                "name": "signature",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1083,
                                                "src": "7350:9:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes calldata"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 1134,
                                                        "name": "unsignedTx",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1081,
                                                        "src": "7330:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    ],
                                                    "id": 1133,
                                                    "name": "keccak256",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967288,
                                                    "src": "7320:9:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                    }
                                                },
                                                "id": 1135,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7320:21:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "id": 1136,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "recover",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11871,
                                            "src": "7320:29:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$",
                                                "typeString": "function (bytes32,bytes memory) pure returns (address)"
                                            }
                                        },
                                        "id": 1138,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7320:40:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7304:56:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 1146,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 1141,
                                                    "name": "relay",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1132,
                                                    "src": "7378:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 1144,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7395:1:3",
                                                            "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": 1143,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "7387:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 1142,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7387:7:3",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 1145,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7387:10:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "7378:19:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "65637265636f766572206661696c6564",
                                                "id": 1147,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7399:18:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_e58270ee9df7f123e74980140856b47d916f4de0f2167d7d0ac95254b56c5356",
                                                    "typeString": "literal_string \"ecrecover failed\""
                                                },
                                                "value": "ecrecover failed"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_e58270ee9df7f123e74980140856b47d916f4de0f2167d7d0ac95254b56c5356",
                                                    "typeString": "literal_string \"ecrecover failed\""
                                                }
                                            ],
                                            "id": 1140,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7370:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 1148,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7370:48:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1149,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7370:48:3"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1151,
                                                "name": "relay",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1132,
                                                "src": "7437:5:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 1152,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1086,
                                                "src": "7444:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            ],
                                            "id": 1150,
                                            "name": "penalize",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1176,
                                            "src": "7428:8:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_contract$_IRelayHub_$5896_$returns$__$",
                                                "typeString": "function (address,contract IRelayHub)"
                                            }
                                        },
                                        "id": 1153,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7428:20:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1154,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7428:20:3"
                                }
                            ]
                        },
                        "id": 1156,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_penalizeIllegalTransaction",
                        "nameLocation": "6688:27:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1087,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1081,
                                    "mutability": "mutable",
                                    "name": "unsignedTx",
                                    "nameLocation": "6740:10:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1156,
                                    "src": "6725:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 1080,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6725:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1083,
                                    "mutability": "mutable",
                                    "name": "signature",
                                    "nameLocation": "6775:9:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1156,
                                    "src": "6760:24:3",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 1082,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6760:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1086,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "6804:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1156,
                                    "src": "6794:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 1085,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1084,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "6794:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "6794:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6715:98:3"
                        },
                        "returnParameters": {
                            "id": 1088,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6830:0:3"
                        },
                        "scope": 1177,
                        "src": "6679:776:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 1175,
                            "nodeType": "Block",
                            "src": "7523:63:3",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1167,
                                                "name": "relayWorker",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1158,
                                                "src": "7546:11:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "expression": {
                                                            "id": 1170,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "7567:3:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 1171,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "7567:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 1169,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "7559:8:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                                        "typeString": "type(address payable)"
                                                    },
                                                    "typeName": {
                                                        "id": 1168,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "7559:8:3",
                                                        "stateMutability": "payable",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 1172,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7559:19:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1164,
                                                "name": "hub",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1161,
                                                "src": "7533:3:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                                    "typeString": "contract IRelayHub"
                                                }
                                            },
                                            "id": 1166,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "penalize",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5737,
                                            "src": "7533:12:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_payable_$returns$__$",
                                                "typeString": "function (address,address payable) external"
                                            }
                                        },
                                        "id": 1173,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7533:46:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1174,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7533:46:3"
                                }
                            ]
                        },
                        "id": 1176,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "penalize",
                        "nameLocation": "7470:8:3",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1162,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1158,
                                    "mutability": "mutable",
                                    "name": "relayWorker",
                                    "nameLocation": "7487:11:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1176,
                                    "src": "7479:19:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1157,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7479:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1161,
                                    "mutability": "mutable",
                                    "name": "hub",
                                    "nameLocation": "7510:3:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1176,
                                    "src": "7500:13:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                        "typeString": "contract IRelayHub"
                                    },
                                    "typeName": {
                                        "id": 1160,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1159,
                                            "name": "IRelayHub",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5896,
                                            "src": "7500:9:3"
                                        },
                                        "referencedDeclaration": 5896,
                                        "src": "7500:9:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IRelayHub_$5896",
                                            "typeString": "contract IRelayHub"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7478:36:3"
                        },
                        "returnParameters": {
                            "id": 1163,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7523:0:3"
                        },
                        "scope": 1177,
                        "src": "7461:125:3",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    }
                ],
                "scope": 1178,
                "src": "504:7084:3",
                "usedErrors": []
            }
        ],
        "src": "0:7588:3"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.7+commit.e28d00a7.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.1.0",
    "updatedAt": "2023-03-16T16:54:15.131Z",
    "devdoc": {
        "kind": "dev",
        "methods": {
            "commit(bytes32)": {
                "params": {
                    "commitHash": "The hash of the report of a penalizable behaviour the reporter wants to reveal. Calculated as `commit(keccak(encodedPenalizeFunction))`."
                }
            },
            "decodeTransaction(bytes)": {
                "returns": {
                    "transaction": "The details that the `Penalizer` needs to decide if the transaction is penalizable."
                }
            },
            "getPenalizeBlockDelay()": {
                "returns": {
                    "_0": "The minimum delay between commit and reveal steps."
                }
            },
            "getPenalizeBlockExpiration()": {
                "returns": {
                    "_0": "The maximum delay between commit and reveal steps."
                }
            },
            "isTransactionTypeValid(bytes)": {
                "returns": {
                    "_0": "`true` if raw transaction is of types Legacy, 1 or 2. `false` otherwise."
                }
            },
            "supportsInterface(bytes4)": {
                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
            }
        },
        "stateVariables": {
            "versionPenalizer": {
                "return": "a SemVer-compliant version of the `Penalizer` contract.",
                "returns": {
                    "_0": "a SemVer-compliant version of the `Penalizer` contract."
                }
            }
        },
        "title": "The Penalizer Implementation",
        "version": 1
    },
    "userdoc": {
        "events": {
            "CommitAdded(address,bytes32,uint256)": {
                "notice": "Emitted once the reporter submits the first step in the commit-reveal process."
            }
        },
        "kind": "user",
        "methods": {
            "commit(bytes32)": {
                "notice": "Called by the reporter as the first step in the commit-reveal process. Any sender can call it to make sure no-one can front-run it to claim this penalization."
            },
            "penalizeIllegalTransaction(bytes,bytes,address,uint256)": {
                "notice": "Called by the reporter as the second step in the commit-reveal process. The Relay Workers are not allowed to make calls other than to the `relayCall` method."
            },
            "penalizeRepeatedNonce(bytes,bytes,bytes,bytes,address,uint256)": {
                "notice": "Called by the reporter as the second step in the commit-reveal process. If a Relay Worker attacked the system by signing multiple transactions with same nonce so only one is accepted, anyone can grab both transactions from the blockchain and submit them here. Check whether `unsignedTx1` != `unsignedTx2`, that both are signed by the same address, and that `unsignedTx1.nonce` == `unsignedTx2.nonce`. If all conditions are met, relay is considered an \"offending relay\". The offending relay will be unregistered immediately, its stake will be forfeited and given to the address who reported it (the `msg.sender`), thus incentivizing anyone to report offending relays."
            }
        },
        "notice": "This Penalizer supports parsing Legacy, Type 1 and Type 2 raw RLP Encoded transactions.",
        "version": 1
    }
}
